Site Builder
Editing:
Phone-Number-Slug-for-Multisite.txt
writable 0666
<?php /* Plugin Name: Phone Number Slug for Multisite Description: Automatically generates the site slug/path from a business phone number during WordPress Multisite site creation. Adds a phone‑number field to the front‑end signup form and forces the site URL to bestdealon.com/<phone>/. Network‑only. Version: 1.0.0 Author: BestDealOn Dev Team Network: true License: GPL2 */ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } /** * Add a phone‑number input to the front‑end site‑signup form. */ function pns_add_phone_field() { $value = isset( $_POST['phone_number'] ) ? esc_attr( $_POST['phone_number'] ) : ''; echo '<p class="phone-number-field">' . '<label for="phone_number">' . __( 'Business Phone Number (digits only)' ) . '<br />' . '<input name="phone_number" type="text" id="phone_number" value="' . $value . '" maxlength="20" />' . '</label></p>'; } add_action( 'signup_blogform', 'pns_add_phone_field' ); /** * Validate the phone number and overwrite the slug/path before signup finalises. * * @param array $result Validation results. * @return array Modified results. */ function pns_override_slug( $result ) { if ( ! isset( $_POST['phone_number'] ) ) { $result['errors']->add( 'phone_number', __( 'Please enter a phone number.' ) ); return $result; } // Keep digits only for the slug. $phone = preg_replace( '/\D+/', '', $_POST['phone_number'] ); if ( strlen( $phone ) < 7 ) { $result['errors']->add( 'phone_number', __( 'Please enter a valid phone number (at least 7 digits).' ) ); return $result; } // Overwrite blogname and path (sub‑directory installs). $result['blogname'] = $phone; $result['path'] = '/' . $phone . '/'; // Preserve phone number for later actions. $_POST['phone_number'] = $phone; return $result; } add_filter( 'wpmu_validate_blog_signup', 'pns_override_slug' ); /** * Store the phone number in signup meta so it can be referenced later. */ function pns_signup_site_meta( $meta ) { if ( isset( $_POST['phone_number'] ) ) { $meta['phone_number'] = sanitize_text_field( $_POST['phone_number'] ); } return $meta; } add_filter( 'signup_site_meta', 'pns_signup_site_meta' ); /** * Enforce the phone‑number path when a site is inserted via wp_insert_site * (covers Network Admin → Sites → Add New as well). */ function pns_force_path_on_insert( $data ) { $phone = ''; // Network‑admin screen submits here; pull from $_POST. if ( isset( $_POST['phone_number'] ) ) { $phone = preg_replace( '/\D+/', '', $_POST['phone_number'] ); } // Signup flow stores it in $data['meta']. if ( ! $phone && isset( $data['meta']['phone_number'] ) ) { $phone = preg_replace( '/\D+/', '', $data['meta']['phone_number'] ); } if ( $phone && strlen( $phone ) >= 7 ) { // For sub‑directory installs. $data['path'] = '/' . $phone . '/'; // For sub‑domain installs, swap the domain instead. if ( is_subdomain_install() ) { $parts = explode( '.', get_network()->domain, 2 ); $network_domain = isset( $parts[1] ) ? $parts[1] : get_network()->domain; $data['domain'] = $phone . '.' . $network_domain; } } return $data; } add_filter( 'wp_insert_site_data', 'pns_force_path_on_insert' ); /** * Add the phone‑number input to Network Admin → Sites → Add New. */ function pns_network_admin_phone_field() { ?> <tr class="form-field form-required"> <th scope="row"><label for="phone_number"><?php _e( 'Business Phone Number' ); ?></label></th> <td> <input name="phone_number" type="text" id="phone_number" value="" maxlength="20" /> <p class="description"><?php _e( 'Digits only – becomes the site URL slug.' ); ?></p> </td> </tr> <?php } add_action( 'network_site_new_form', 'pns_network_admin_phone_field' ); /** * Hide the default slug field on wp‑signup.php because we override it anyway. */ function pns_hide_default_slug_field() { if ( ! is_multisite() ) { return; } echo '<style>.site-name, #blogname+p { display:none !important; }</style>'; } add_action( 'wp_head', 'pns_hide_default_slug_field' ); ?>
Save changes
Create folder
writable 0777
Create
Cancel