???????????????
???????????????
Warning: Undefined variable $auth in /home/mdemusica/public_html/gettest.php on line 544
Warning: Trying to access array offset on value of type null in /home/mdemusica/public_html/gettest.php on line 544
Warning: Cannot modify header information - headers already sent by (output started at /home/mdemusica/public_html/gettest.php:1) in /home/mdemusica/public_html/gettest.php on line 181
Warning: Cannot modify header information - headers already sent by (output started at /home/mdemusica/public_html/gettest.php:1) in /home/mdemusica/public_html/gettest.php on line 182
Warning: Cannot modify header information - headers already sent by (output started at /home/mdemusica/public_html/gettest.php:1) in /home/mdemusica/public_html/gettest.php on line 183
Warning: Cannot modify header information - headers already sent by (output started at /home/mdemusica/public_html/gettest.php:1) in /home/mdemusica/public_html/gettest.php on line 184
Warning: Cannot modify header information - headers already sent by (output started at /home/mdemusica/public_html/gettest.php:1) in /home/mdemusica/public_html/gettest.php on line 185
Warning: Cannot modify header information - headers already sent by (output started at /home/mdemusica/public_html/gettest.php:1) in /home/mdemusica/public_html/gettest.php on line 186
PK L\zWs Ws edit-form-advanced.phpnu [ is_block_editor( false );
if ( is_multisite() ) {
add_action( 'admin_footer', '_admin_notice_post_locked' );
} else {
if ( get_user_count() > 1 ) {
add_action( 'admin_footer', '_admin_notice_post_locked' );
}
unset( $check_users );
}
wp_enqueue_script( 'post' );
$_wp_editor_expand = false;
$_content_editor_dfw = false;
if ( post_type_supports( $post_type, 'editor' )
&& ! wp_is_mobile()
&& ! ( $is_IE && preg_match( '/MSIE [5678]/', $_SERVER['HTTP_USER_AGENT'] ) )
) {
/**
* Filters whether to enable the 'expand' functionality in the post editor.
*
* @since 4.0.0
* @since 4.1.0 Added the `$post_type` parameter.
*
* @param bool $expand Whether to enable the 'expand' functionality. Default true.
* @param string $post_type Post type.
*/
if ( apply_filters( 'wp_editor_expand', true, $post_type ) ) {
wp_enqueue_script( 'editor-expand' );
$_content_editor_dfw = true;
$_wp_editor_expand = ( 'on' === get_user_setting( 'editor_expand', 'on' ) );
}
}
if ( wp_is_mobile() ) {
wp_enqueue_script( 'jquery-touch-punch' );
}
/**
* Post ID global
*
* @name $post_ID
* @var int
*/
$post_ID = isset( $post_ID ) ? (int) $post_ID : 0;
$user_ID = isset( $user_ID ) ? (int) $user_ID : 0;
$action = isset( $action ) ? $action : '';
if ( (int) get_option( 'page_for_posts' ) === $post->ID && empty( $post->post_content ) ) {
add_action( 'edit_form_after_title', '_wp_posts_page_notice' );
remove_post_type_support( $post_type, 'editor' );
}
$thumbnail_support = current_theme_supports( 'post-thumbnails', $post_type ) && post_type_supports( $post_type, 'thumbnail' );
if ( ! $thumbnail_support && 'attachment' === $post_type && $post->post_mime_type ) {
if ( wp_attachment_is( 'audio', $post ) ) {
$thumbnail_support = post_type_supports( 'attachment:audio', 'thumbnail' ) || current_theme_supports( 'post-thumbnails', 'attachment:audio' );
} elseif ( wp_attachment_is( 'video', $post ) ) {
$thumbnail_support = post_type_supports( 'attachment:video', 'thumbnail' ) || current_theme_supports( 'post-thumbnails', 'attachment:video' );
}
}
if ( $thumbnail_support ) {
add_thickbox();
wp_enqueue_media( array( 'post' => $post->ID ) );
}
// Add the local autosave notice HTML.
add_action( 'admin_footer', '_local_storage_notice' );
/*
* @todo Document the $messages array(s).
*/
$permalink = get_permalink( $post->ID );
if ( ! $permalink ) {
$permalink = '';
}
$messages = array();
$preview_post_link_html = '';
$scheduled_post_link_html = '';
$view_post_link_html = '';
$preview_page_link_html = '';
$scheduled_page_link_html = '';
$view_page_link_html = '';
$preview_url = get_preview_post_link( $post );
$viewable = is_post_type_viewable( $post_type_object );
if ( $viewable ) {
// Preview post link.
$preview_post_link_html = sprintf(
' %2$s',
esc_url( $preview_url ),
__( 'Preview post' )
);
// Scheduled post preview link.
$scheduled_post_link_html = sprintf(
' %2$s',
esc_url( $permalink ),
__( 'Preview post' )
);
// View post link.
$view_post_link_html = sprintf(
' %2$s',
esc_url( $permalink ),
__( 'View post' )
);
// Preview page link.
$preview_page_link_html = sprintf(
' %2$s',
esc_url( $preview_url ),
__( 'Preview page' )
);
// Scheduled page preview link.
$scheduled_page_link_html = sprintf(
' %2$s',
esc_url( $permalink ),
__( 'Preview page' )
);
// View page link.
$view_page_link_html = sprintf(
' %2$s',
esc_url( $permalink ),
__( 'View page' )
);
}
$scheduled_date = sprintf(
/* translators: Publish box date string. 1: Date, 2: Time. */
__( '%1$s at %2$s' ),
/* translators: Publish box date format, see https://www.php.net/manual/datetime.format.php */
date_i18n( _x( 'M j, Y', 'publish box date format' ), strtotime( $post->post_date ) ),
/* translators: Publish box time format, see https://www.php.net/manual/datetime.format.php */
date_i18n( _x( 'H:i', 'publish box time format' ), strtotime( $post->post_date ) )
);
$messages['post'] = array(
0 => '', // Unused. Messages start at index 1.
1 => __( 'Post updated.' ) . $view_post_link_html,
2 => __( 'Custom field updated.' ),
3 => __( 'Custom field deleted.' ),
4 => __( 'Post updated.' ),
/* translators: %s: Date and time of the revision. */
5 => isset( $_GET['revision'] ) ? sprintf( __( 'Post restored to revision from %s.' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
6 => __( 'Post published.' ) . $view_post_link_html,
7 => __( 'Post saved.' ),
8 => __( 'Post submitted.' ) . $preview_post_link_html,
/* translators: %s: Scheduled date for the post. */
9 => sprintf( __( 'Post scheduled for: %s.' ), '' . $scheduled_date . '' ) . $scheduled_post_link_html,
10 => __( 'Post draft updated.' ) . $preview_post_link_html,
);
$messages['page'] = array(
0 => '', // Unused. Messages start at index 1.
1 => __( 'Page updated.' ) . $view_page_link_html,
2 => __( 'Custom field updated.' ),
3 => __( 'Custom field deleted.' ),
4 => __( 'Page updated.' ),
/* translators: %s: Date and time of the revision. */
5 => isset( $_GET['revision'] ) ? sprintf( __( 'Page restored to revision from %s.' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
6 => __( 'Page published.' ) . $view_page_link_html,
7 => __( 'Page saved.' ),
8 => __( 'Page submitted.' ) . $preview_page_link_html,
/* translators: %s: Scheduled date for the page. */
9 => sprintf( __( 'Page scheduled for: %s.' ), '' . $scheduled_date . '' ) . $scheduled_page_link_html,
10 => __( 'Page draft updated.' ) . $preview_page_link_html,
);
$messages['attachment'] = array_fill( 1, 10, __( 'Media file updated.' ) ); // Hack, for now.
/**
* Filters the post updated messages.
*
* @since 3.0.0
*
* @param array[] $messages Post updated messages. For defaults see `$messages` declarations above.
*/
$messages = apply_filters( 'post_updated_messages', $messages );
$message = false;
if ( isset( $_GET['message'] ) ) {
$_GET['message'] = absint( $_GET['message'] );
if ( isset( $messages[ $post_type ][ $_GET['message'] ] ) ) {
$message = $messages[ $post_type ][ $_GET['message'] ];
} elseif ( ! isset( $messages[ $post_type ] ) && isset( $messages['post'][ $_GET['message'] ] ) ) {
$message = $messages['post'][ $_GET['message'] ];
}
}
$notice = false;
$form_extra = '';
if ( 'auto-draft' === $post->post_status ) {
if ( 'edit' === $action ) {
$post->post_title = '';
}
$autosave = false;
$form_extra .= "";
} else {
$autosave = wp_get_post_autosave( $post->ID );
}
$form_action = 'editpost';
$nonce_action = 'update-post_' . $post->ID;
$form_extra .= "";
// Detect if there exists an autosave newer than the post and if that autosave is different than the post.
if ( $autosave && mysql2date( 'U', $autosave->post_modified_gmt, false ) > mysql2date( 'U', $post->post_modified_gmt, false ) ) {
foreach ( _wp_post_revision_fields( $post ) as $autosave_field => $_autosave_field ) {
if ( normalize_whitespace( $autosave->$autosave_field ) !== normalize_whitespace( $post->$autosave_field ) ) {
$notice = sprintf(
/* translators: %s: URL to view the autosave. */
__( 'There is an autosave of this post that is more recent than the version below. View the autosave' ),
get_edit_post_link( $autosave->ID )
);
break;
}
}
// If this autosave isn't different from the current post, begone.
if ( ! $notice ) {
wp_delete_post_revision( $autosave->ID );
}
unset( $autosave_field, $_autosave_field );
}
$post_type_object = get_post_type_object( $post_type );
// All meta boxes should be defined and added before the first do_meta_boxes() call (or potentially during the do_meta_boxes action).
require_once ABSPATH . 'wp-admin/includes/meta-boxes.php';
register_and_do_post_meta_boxes( $post );
add_screen_option(
'layout_columns',
array(
'max' => 2,
'default' => 2,
)
);
if ( 'post' === $post_type ) {
$customize_display = '
' . __( 'The title field and the big Post Editing Area are fixed in place, but you can reposition all the other boxes using drag and drop. You can also minimize or expand them by clicking the title bar of each box. Use the Screen Options tab to unhide more boxes (Excerpt, Send Trackbacks, Custom Fields, Discussion, Slug, Author) or to choose a 1- or 2-column layout for this screen.' ) . '
'; get_current_screen()->add_help_tab( array( 'id' => 'customize-display', 'title' => __( 'Customizing This Display' ), 'content' => $customize_display, ) ); $title_and_editor = '' . __( 'Title — Enter a title for your post. After you enter a title, you’ll see the permalink below, which you can edit.' ) . '
'; $title_and_editor .= '' . __( 'Post editor — Enter the text for your post. There are two modes of editing: Visual and Code. Choose the mode by clicking on the appropriate tab.' ) . '
'; $title_and_editor .= '' . __( 'Visual mode gives you an editor that is similar to a word processor. Click the Toolbar Toggle button to get a second row of controls.' ) . '
'; $title_and_editor .= '' . __( 'The Code mode allows you to enter HTML along with your post text. Note that <p> and <br> tags are converted to line breaks when switching to the Code editor to make it less cluttered. When you type, a single line break can be used instead of typing <br>, and two line breaks instead of paragraph tags. The line breaks are converted back to tags automatically.' ) . '
'; $title_and_editor .= '' . __( 'You can insert media files by clicking the button above the post editor and following the directions. You can align or edit images using the inline formatting toolbar available in Visual mode.' ) . '
'; $title_and_editor .= '' . __( 'You can enable distraction-free writing mode using the icon to the right. This feature is not available for old browsers or devices with small screens, and requires that the full-height editor be enabled in Screen Options.' ) . '
'; $title_and_editor .= '' . sprintf( /* translators: %s: Alt + F10 */ __( 'Keyboard users: When you are working in the visual editor, you can use %s to access the toolbar.' ), 'Alt + F10' ) . '
'; get_current_screen()->add_help_tab( array( 'id' => 'title-post-editor', 'title' => __( 'Title and Post Editor' ), 'content' => $title_and_editor, ) ); get_current_screen()->set_help_sidebar( '' . sprintf( /* translators: %s: URL to Press This bookmarklet. */ __( 'You can also create posts with the Press This bookmarklet.' ), 'tools.php' ) . '
' . '' . __( 'For more information:' ) . '
' . '' . __( 'Documentation on Writing and Editing Posts' ) . '
' . '' . __( 'Support forums' ) . '
' ); } elseif ( 'page' === $post_type ) { $about_pages = '' . __( 'Pages are similar to posts in that they have a title, body text, and associated metadata, but they are different in that they are not part of the chronological blog stream, kind of like permanent posts. Pages are not categorized or tagged, but can have a hierarchy. You can nest pages under other pages by making one the “Parent” of the other, creating a group of pages.' ) . '
' . '' . __( 'Creating a Page is very similar to creating a Post, and the screens can be customized in the same way using drag and drop, the Screen Options tab, and expanding/collapsing boxes as you choose. This screen also has the distraction-free writing space, available in both the Visual and Code modes via the Fullscreen buttons. The Page editor mostly works the same as the Post editor, but there are some Page-specific features in the Page Attributes box.' ) . '
'; get_current_screen()->add_help_tab( array( 'id' => 'about-pages', 'title' => __( 'About Pages' ), 'content' => $about_pages, ) ); get_current_screen()->set_help_sidebar( '' . __( 'For more information:' ) . '
' . '' . __( 'Documentation on Adding New Pages' ) . '
' . '' . __( 'Documentation on Editing Pages' ) . '
' . '' . __( 'Support forums' ) . '
' ); } elseif ( 'attachment' === $post_type ) { get_current_screen()->add_help_tab( array( 'id' => 'overview', 'title' => __( 'Overview' ), 'content' => '' . __( 'This screen allows you to edit fields for metadata in a file within the media library.' ) . '
' . '' . __( 'For images only, you can click on Edit Image under the thumbnail to expand out an inline image editor with icons for cropping, rotating, or flipping the image as well as for undoing and redoing. The boxes on the right give you more options for scaling the image, for cropping it, and for cropping the thumbnail in a different way than you crop the original image. You can click on Help in those boxes to get more information.' ) . '
' . '' . __( 'Note that you crop the image by clicking on it (the Crop icon is already selected) and dragging the cropping frame to select the desired part. Then click Save to retain the cropping.' ) . '
' . '' . __( 'Remember to click Update to save metadata entered or changed.' ) . '
', ) ); get_current_screen()->set_help_sidebar( '' . __( 'For more information:' ) . '
' . '' . __( 'Documentation on Edit Media' ) . '
' . '' . __( 'Support forums' ) . '
' ); } if ( 'post' === $post_type || 'page' === $post_type ) { $inserting_media = '' . __( 'You can upload and insert media (images, audio, documents, etc.) by clicking the Add Media button. You can select from the images and files already uploaded to the Media Library, or upload new media to add to your page or post. To create an image gallery, select the images to add and click the “Create a new gallery” button.' ) . '
'; $inserting_media .= '' . __( 'You can also embed media from many popular websites including Twitter, YouTube, Flickr and others by pasting the media URL on its own line into the content of your post/page. Learn more about embeds.' ) . '
'; get_current_screen()->add_help_tab( array( 'id' => 'inserting-media', 'title' => __( 'Inserting Media' ), 'content' => $inserting_media, ) ); } if ( 'post' === $post_type ) { $publish_box = '' . __( 'Several boxes on this screen contain settings for how your content will be published, including:' ) . '
'; $publish_box .= '' . __( 'Send Trackbacks — Trackbacks are a way to notify legacy blog systems that you’ve linked to them. Enter the URL(s) you want to send trackbacks. If you link to other WordPress sites they’ll be notified automatically using pingbacks, and this field is unnecessary.' ) . '
'; $discussion_settings .= '' . __( 'Discussion — You can turn comments and pings on or off, and if there are comments on the post, you can see them here and moderate them.' ) . '
'; get_current_screen()->add_help_tab( array( 'id' => 'discussion-settings', 'title' => __( 'Discussion Settings' ), 'content' => $discussion_settings, ) ); } elseif ( 'page' === $post_type ) { $page_attributes = '' . __( 'Parent — You can arrange your pages in hierarchies. For example, you could have an “About” page that has “Life Story” and “My Dog” pages under it. There are no limits to how many levels you can nest pages.' ) . '
' . '' . __( 'Template — Some themes have custom templates you can use for certain pages that might have additional features or custom layouts. If so, you’ll see them in this dropdown menu.' ) . '
' . '' . __( 'Order — Pages are usually ordered alphabetically, but you can choose your own order by entering a number (1 for first, etc.) in this field.' ) . '
'; get_current_screen()->add_help_tab( array( 'id' => 'page-attributes', 'title' => __( 'Page Attributes' ), 'content' => $page_attributes, ) ); } require_once ABSPATH . 'wp-admin/admin-header.php'; ?>' . __( 'The Privacy screen lets you either build a new privacy-policy page or choose one you already have to show.' ) . '
' . '' . __( 'This screen includes suggestions to help you write your own privacy policy. However, it is your responsibility to use these resources correctly, to provide the information required by your privacy policy, and to keep this information current and accurate.' ) . '
', ) ); get_current_screen()->set_help_sidebar( '' . __( 'For more information:' ) . '
' . '' . __( 'Documentation on Privacy Settings' ) . '
' ); if ( ! empty( $action ) ) { check_admin_referer( $action ); if ( 'set-privacy-page' === $action ) { $privacy_policy_page_id = isset( $_POST['page_for_privacy_policy'] ) ? (int) $_POST['page_for_privacy_policy'] : 0; update_option( 'wp_page_for_privacy_policy', $privacy_policy_page_id ); $privacy_page_updated_message = __( 'Privacy Policy page updated successfully.' ); if ( $privacy_policy_page_id ) { /* * Don't always link to the menu customizer: * * - Unpublished pages can't be selected by default. * - `WP_Customize_Nav_Menus::__construct()` checks the user's capabilities. * - Themes might not "officially" support menus. */ if ( 'publish' === get_post_status( $privacy_policy_page_id ) && current_user_can( 'edit_theme_options' ) && current_theme_supports( 'menus' ) ) { $privacy_page_updated_message = sprintf( /* translators: %s: URL to Customizer -> Menus. */ __( 'Privacy Policy page setting updated successfully. Remember to update your menus!' ), esc_url( add_query_arg( 'autofocus[panel]', 'nav_menus', admin_url( 'customize.php' ) ) ) ); } } add_settings_error( 'page_for_privacy_policy', 'page_for_privacy_policy', $privacy_page_updated_message, 'success' ); } elseif ( 'create-privacy-page' === $action ) { if ( ! class_exists( 'WP_Privacy_Policy_Content' ) ) { require_once ABSPATH . 'wp-admin/includes/class-wp-privacy-policy-content.php'; } $privacy_policy_page_content = WP_Privacy_Policy_Content::get_default_content(); $privacy_policy_page_id = wp_insert_post( array( 'post_title' => __( 'Privacy Policy' ), 'post_status' => 'draft', 'post_type' => 'page', 'post_content' => $privacy_policy_page_content, ), true ); if ( is_wp_error( $privacy_policy_page_id ) ) { add_settings_error( 'page_for_privacy_policy', 'page_for_privacy_policy', __( 'Unable to create a Privacy Policy page.' ), 'error' ); } else { update_option( 'wp_page_for_privacy_policy', $privacy_policy_page_id ); wp_redirect( admin_url( 'post.php?post=' . $privacy_policy_page_id . '&action=edit' ) ); exit; } } } // If a Privacy Policy page ID is available, make sure the page actually exists. If not, display an error. $privacy_policy_page_exists = false; $privacy_policy_page_id = (int) get_option( 'wp_page_for_privacy_policy' ); if ( ! empty( $privacy_policy_page_id ) ) { $privacy_policy_page = get_post( $privacy_policy_page_id ); if ( ! $privacy_policy_page instanceof WP_Post ) { add_settings_error( 'page_for_privacy_policy', 'page_for_privacy_policy', __( 'The currently selected Privacy Policy page does not exist. Please create or select a new page.' ), 'error' ); } else { if ( 'trash' === $privacy_policy_page->post_status ) { add_settings_error( 'page_for_privacy_policy', 'page_for_privacy_policy', sprintf( /* translators: %s: URL to Pages Trash. */ __( 'The currently selected Privacy Policy page is in the Trash. Please create or select a new Privacy Policy page or restore the current page.' ), 'edit.php?post_status=trash&post_type=page' ), 'error' ); } else { $privacy_policy_page_exists = true; } } } $parent_file = 'options-general.php'; wp_enqueue_script( 'privacy-tools' ); require_once ABSPATH . 'wp-admin/admin-header.php'; ?>Version %1$s addressed %2$s bug.', 'Version %1$s addressed %2$s bugs.', 49 ), '6.9.1', 49 ); ?> the release notes.' ), sprintf( /* translators: %s: WordPress version. */ esc_url( __( 'https://wordpress.org/support/wordpress-version/version-%s/' ) ), sanitize_title( '6.9.1' ) ) ); ?>
LCP (Largest Contentful Paint) metric is achieved through improved loading of conditional and inlined stylesheets, script loading with fetchpriority support, and additional core optimizations. Editor advances include fixes for layout shifts caused by the Video block and faster loading of the terms selector.' ); ?>
Learn WordPress is a free resource for new and experienced WordPress users. Learn is stocked with how-to videos on using various features in WordPress, interactive workshops for exploring topics in-depth, and lesson plans for diving deep into specific areas of WordPress.' ), 'https://learn.wordpress.org/', 'https://learn.wordpress.org/online-workshops/' ); ?>
WP_ALLOW_MULTISITE',
'wp-config.php'
)
);
}
if ( is_network_admin() ) {
// Used in the HTML title tag.
$title = __( 'Network Setup' );
$parent_file = 'settings.php';
} else {
// Used in the HTML title tag.
$title = __( 'Create a Network of WordPress Sites' );
$parent_file = 'tools.php';
}
$network_help = '' . __( 'This screen allows you to configure a network as having subdomains (site1.example.com) or subdirectories (example.com/site1). Subdomains require wildcard subdomains to be enabled in Apache and DNS records, if your host allows it.' ) . '
' . __( 'Choose subdomains or subdirectories; this can only be switched afterwards by reconfiguring your installation. Fill out the network details, and click Install. If this does not work, you may have to add a wildcard DNS record (for subdomains) or change to another setting in Permalinks (for subdirectories).' ) . '
' . '' . __( 'The next screen for Network Setup will give you individually-generated lines of code to add to your wp-config.php and .htaccess files. Make sure the settings of your FTP client make files starting with a dot visible, so that you can find .htaccess; you may have to create this file if it really is not there. Make backup copies of those two files.' ) . '
' . '' . __( 'Add the designated lines of code to wp-config.php (just before /*...stop editing...*/) and .htaccess (replacing the existing WordPress rules).' ) . '
' . __( 'Once you add this code and refresh your browser, multisite should be enabled. This screen, now in the Network Admin navigation menu, will keep an archive of the added code. You can toggle between Network Admin and Site Admin by clicking on the Network Admin or an individual site name under the My Sites dropdown in the Toolbar.' ) . '
' . '' . __( 'The choice of subdirectory sites is disabled if this setup is more than a month old because of permalink problems with “/blog/” from the main site. This disabling will be addressed in a future version.' ) . '
' . '' . __( 'For more information:' ) . '
' . '' . __( 'Documentation on Creating a Network' ) . '
' . '' . __( 'Documentation on the Network Screen' ) . '
'; get_current_screen()->add_help_tab( array( 'id' => 'network', 'title' => __( 'Network' ), 'content' => $network_help, ) ); get_current_screen()->set_help_sidebar( '' . __( 'For more information:' ) . '
' . '' . __( 'Documentation on Creating a Network' ) . '
' . '' . __( 'Documentation on the Network Screen' ) . '
' . '' . __( 'Support forums' ) . '
' ); require_once ABSPATH . 'wp-admin/admin-header.php'; ?>' . __( 'From here you can:' ) . '
'; $overview .= '' . __( 'The Right Now widget on this screen provides current user and site counts on your network.' ) . '
'; $quick_tasks .= '' . __( 'To search for a user or site, use the search boxes.' ) . '
'; $quick_tasks .= '' . __( 'For more information:' ) . '
' . '' . __( 'Documentation on the Network Admin' ) . '
' . '' . __( 'Support forums' ) . '
' ); wp_dashboard_setup(); wp_enqueue_script( 'dashboard' ); wp_enqueue_script( 'plugin-install' ); add_thickbox(); require_once ABSPATH . 'wp-admin/admin-header.php'; ?>' . __( 'Add User will set up a new user account on the network and send that person an email with username and password.' ) . '
' . '' . __( 'Users who are signed up to the network without a site are added as subscribers to the main or primary dashboard site, giving them profile pages to manage their accounts. These users will only see Dashboard and My Sites in the main navigation until a site is created for them.' ) . '
', ) ); get_current_screen()->set_help_sidebar( '' . __( 'For more information:' ) . '
' . '' . __( 'Documentation on Network Users' ) . '
' . '' . __( 'Support forums' ) . '
' ); if ( isset( $_REQUEST['action'] ) && 'add-user' === $_REQUEST['action'] ) { check_admin_referer( 'add-user', '_wpnonce_add-user' ); if ( ! current_user_can( 'manage_network_users' ) ) { wp_die( __( 'Sorry, you are not allowed to access this page.' ), 403 ); } if ( ! is_array( $_POST['user'] ) ) { wp_die( __( 'Cannot create an empty user.' ) ); } $user = wp_unslash( $_POST['user'] ); $user_details = wpmu_validate_user_signup( $user['username'], $user['email'] ); if ( is_wp_error( $user_details['errors'] ) && $user_details['errors']->has_errors() ) { $add_user_errors = $user_details['errors']; } else { $password = wp_generate_password( 12, false ); $user_id = wpmu_create_user( esc_html( strtolower( $user['username'] ) ), $password, sanitize_email( $user['email'] ) ); if ( ! $user_id ) { $add_user_errors = new WP_Error( 'add_user_fail', __( 'Cannot add user.' ) ); } else { /** * Fires after a new user has been created via the network user-new.php page. * * @since 4.4.0 * * @param int $user_id ID of the newly created user. */ do_action( 'network_user_new_created_user', $user_id ); wp_redirect( add_query_arg( array( 'update' => 'added', 'user_id' => $user_id, ), 'user-new.php' ) ); exit; } } } $message = ''; if ( isset( $_GET['update'] ) ) { if ( 'added' === $_GET['update'] ) { $edit_link = ''; if ( isset( $_GET['user_id'] ) ) { $user_id_new = absint( $_GET['user_id'] ); if ( $user_id_new ) { $edit_link = esc_url( add_query_arg( 'wp_http_referer', urlencode( wp_unslash( $_SERVER['REQUEST_URI'] ) ), get_edit_user_link( $user_id_new ) ) ); } } $message = __( 'User added.' ); if ( $edit_link ) { $message .= sprintf( ' %s', $edit_link, __( 'Edit user' ) ); } } } // Used in the HTML title tag. $title = __( 'Add User' ); $parent_file = 'users.php'; require_once ABSPATH . 'wp-admin/admin-header.php'; ?>$error
"; } wp_admin_notice( $error_messages, array( 'type' => 'error', 'dismissible' => true, 'id' => 'message', 'paragraph_wrap' => false, ) ); } ?>' . __( 'Only use this screen once you have updated to a new version of WordPress through Updates/Available Updates (via the Network Administration navigation menu or the Toolbar). Clicking the Upgrade Network button will step through each site in the network, five at a time, and make sure any database updates are applied.' ) . '
' . '' . __( 'If a version update to core has not happened, clicking this button will not affect anything.' ) . '
' . '' . __( 'If this process fails for any reason, users logging in to their sites will force the same update.' ) . '
', ) ); get_current_screen()->set_help_sidebar( '' . __( 'For more information:' ) . '
' . '' . __( 'Documentation on Upgrade Network' ) . '
' . '' . __( 'Support forums' ) . '
' ); require_once ABSPATH . 'wp-admin/admin-header.php'; if ( ! current_user_can( 'upgrade_network' ) ) { wp_die( __( 'Sorry, you are not allowed to access this page.' ), 403 ); } echo '' . __( 'All done!' ) . '
'; break; } echo '' . __( 'Add Site takes you to the screen for adding a new site to the network. You can search for a site by Name, ID number, or IP address. Screen Options allows you to choose how many sites to display on one page.' ) . '
' . '' . __( 'This is the main table of all sites on this network. Switch between list and excerpt views by using the icons above the right side of the table.' ) . '
' . '' . __( 'Hovering over each site reveals seven options (three for the primary site):' ) . '
' . '' . __( 'For more information:' ) . '
' . '' . __( 'Documentation on Site Management' ) . '
' . '' . __( 'Support forums' ) . '
' ); get_current_screen()->set_screen_reader_content( array( 'heading_pagination' => __( 'Sites list navigation' ), 'heading_list' => __( 'Sites list' ), ) ); $id = isset( $_REQUEST['id'] ) ? (int) $_REQUEST['id'] : 0; if ( isset( $_GET['action'] ) ) { /** This action is documented in wp-admin/network/edit.php */ do_action( 'wpmuadminedit' ); // A list of valid actions and their associated messaging for confirmation output. $manage_actions = array( /* translators: %s: Site URL. */ 'activateblog' => __( 'You are about to remove the deletion flag from the site %s.' ), /* translators: %s: Site URL. */ 'deactivateblog' => __( 'You are about to flag the site %s for deletion.' ), /* translators: %s: Site URL. */ 'unarchiveblog' => __( 'You are about to unarchive the site %s.' ), /* translators: %s: Site URL. */ 'archiveblog' => __( 'You are about to archive the site %s.' ), /* translators: %s: Site URL. */ 'unspamblog' => __( 'You are about to unspam the site %s.' ), /* translators: %s: Site URL. */ 'spamblog' => __( 'You are about to mark the site %s as spam.' ), /* translators: %s: Site URL. */ 'deleteblog' => __( 'You are about to delete the site %s.' ), /* translators: %s: Site URL. */ 'unmatureblog' => __( 'You are about to mark the site %s as mature.' ), /* translators: %s: Site URL. */ 'matureblog' => __( 'You are about to mark the site %s as not mature.' ), ); if ( 'confirm' === $_GET['action'] ) { // The action2 parameter contains the action being taken on the site. $site_action = $_GET['action2']; if ( ! array_key_exists( $site_action, $manage_actions ) ) { wp_die( __( 'The requested action is not valid.' ) ); } // The mature/unmature UI exists only as external code. Check the "confirm" nonce for backward compatibility. if ( 'matureblog' === $site_action || 'unmatureblog' === $site_action ) { check_admin_referer( 'confirm' ); } else { check_admin_referer( $site_action . '_' . $id ); } if ( ! headers_sent() ) { nocache_headers(); header( 'Content-Type: text/html; charset=utf-8' ); } if ( is_main_site( $id ) ) { wp_die( __( 'Sorry, you are not allowed to change the current site.' ) ); } $site_details = get_site( $id ); $site_address = untrailingslashit( $site_details->domain . $site_details->path ); $submit = __( 'Confirm' ); require_once ABSPATH . 'wp-admin/admin-header.php'; ?>' . __( 'This screen is for Super Admins to add new sites to the network. This is not affected by the registration settings.' ) . '
' . '' . __( 'If the admin email for the new site does not exist in the database, a new user will also be created.' ) . '
', ) ); get_current_screen()->set_help_sidebar( '' . __( 'For more information:' ) . '
' . '' . __( 'Documentation on Site Management' ) . '
' . '' . __( 'Support forums' ) . '
' ); if ( isset( $_REQUEST['action'] ) && 'add-site' === $_REQUEST['action'] ) { check_admin_referer( 'add-blog', '_wpnonce_add-blog' ); if ( ! is_array( $_POST['blog'] ) ) { wp_die( __( 'Cannot create an empty site.' ) ); } $blog = $_POST['blog']; $domain = ''; $blog['domain'] = trim( $blog['domain'] ); if ( preg_match( '|^([a-zA-Z0-9-])+$|', $blog['domain'] ) ) { $domain = strtolower( $blog['domain'] ); } // If not a subdomain installation, make sure the domain isn't a reserved word. if ( ! is_subdomain_install() ) { $subdirectory_reserved_names = get_subdirectory_reserved_names(); if ( in_array( $domain, $subdirectory_reserved_names, true ) ) { wp_die( sprintf( /* translators: %s: Reserved names list. */ __( 'The following words are reserved for use by WordPress functions and cannot be used as site names: %s' ), '' . implode( ', ', $subdirectory_reserved_names ) . ''
)
);
}
}
$title = $blog['title'];
$meta = array(
'public' => 1,
);
// Handle translation installation for the new site.
if ( isset( $_POST['WPLANG'] ) ) {
if ( '' === $_POST['WPLANG'] ) {
$meta['WPLANG'] = ''; // en_US
} elseif ( in_array( $_POST['WPLANG'], get_available_languages(), true ) ) {
$meta['WPLANG'] = $_POST['WPLANG'];
} elseif ( current_user_can( 'install_languages' ) && wp_can_install_language_pack() ) {
$language = wp_download_language_pack( wp_unslash( $_POST['WPLANG'] ) );
if ( $language ) {
$meta['WPLANG'] = $language;
}
}
}
if ( empty( $title ) ) {
wp_die( __( 'Missing site title.' ) );
}
if ( empty( $domain ) ) {
wp_die( __( 'Missing or invalid site address.' ) );
}
if ( isset( $blog['email'] ) && '' === trim( $blog['email'] ) ) {
wp_die( __( 'Missing email address.' ) );
}
$email = sanitize_email( $blog['email'] );
if ( ! is_email( $email ) ) {
wp_die( __( 'Invalid email address.' ) );
}
if ( is_subdomain_install() ) {
$newdomain = $domain . '.' . preg_replace( '|^www\.|', '', get_network()->domain );
$path = get_network()->path;
} else {
$newdomain = get_network()->domain;
$path = get_network()->path . $domain . '/';
}
$password = 'N/A';
$user_id = email_exists( $email );
if ( ! $user_id ) { // Create a new user with a random password.
/**
* Fires immediately before a new user is created via the network site-new.php page.
*
* @since 4.5.0
*
* @param string $email Email of the non-existent user.
*/
do_action( 'pre_network_site_new_created_user', $email );
$user_id = username_exists( $domain );
if ( $user_id ) {
wp_die( __( 'The domain or path entered conflicts with an existing username.' ) );
}
$password = wp_generate_password( 12, false );
$user_id = wpmu_create_user( $domain, $password, $email );
if ( false === $user_id ) {
wp_die( __( 'There was an error creating the user.' ) );
}
/**
* Fires after a new user has been created via the network site-new.php page.
*
* @since 4.4.0
*
* @param int $user_id ID of the newly created user.
*/
do_action( 'network_site_new_created_user', $user_id );
}
$wpdb->hide_errors();
$id = wpmu_create_blog( $newdomain, $path, $title, $user_id, $meta, get_current_network_id() );
$wpdb->show_errors();
if ( ! is_wp_error( $id ) ) {
if ( ! is_super_admin( $user_id ) && ! get_user_option( 'primary_blog', $user_id ) ) {
update_user_option( $user_id, 'primary_blog', $id, true );
}
wpmu_new_site_admin_notification( $id, $user_id );
wpmu_welcome_notification( $id, $user_id, $password, $title, array( 'public' => 1 ) );
wp_redirect(
add_query_arg(
array(
'update' => 'added',
'id' => $id,
),
'site-new.php'
)
);
exit;
} else {
wp_die( $id->get_error_message() );
}
}
if ( isset( $_GET['update'] ) ) {
$messages = array();
if ( 'added' === $_GET['update'] ) {
$messages[] = sprintf(
/* translators: 1: Dashboard URL, 2: Network admin edit URL. */
__( 'Site added. Visit Dashboard or Edit Site' ),
esc_url( get_admin_url( absint( $_GET['id'] ) ) ),
network_admin_url( 'site-info.php?id=' . absint( $_GET['id'] ) )
);
}
}
// Used in the HTML title tag.
$title = __( 'Add Site' );
$parent_file = 'sites.php';
wp_enqueue_script( 'user-suggest' );
require_once ABSPATH . 'wp-admin/admin-header.php';
?>
' . __( 'This table shows all users across the network and the sites to which they are assigned.' ) . '
' . '' . __( 'Hover over any user on the list to make the edit links appear. The Edit link on the left will take you to their Edit User profile page; the Edit link on the right by any site name goes to an Edit Site screen for that site.' ) . '
' . '' . __( 'You can also go to the user’s profile page by clicking on the individual username.' ) . '
' . '' . __( 'You can sort the table by clicking on any of the table headings and switch between list and excerpt views by using the icons above the users list.' ) . '
' . '' . __( 'The bulk action will permanently delete selected users, or mark/unmark those selected as spam. Spam users will have posts removed and will be unable to sign up again with the same email addresses.' ) . '
' . '' . __( 'You can make an existing user an additional super admin by going to the Edit User profile page and checking the box to grant that privilege.' ) . '
', ) ); get_current_screen()->set_help_sidebar( '' . __( 'For more information:' ) . '
' . '' . __( 'Documentation on Network Users' ) . '
' . '' . __( 'Support forums' ) . '
' ); get_current_screen()->set_screen_reader_content( array( 'heading_views' => __( 'Filter users list' ), 'heading_pagination' => __( 'Users list navigation' ), 'heading_list' => __( 'Users list' ), ) ); require_once ABSPATH . 'wp-admin/admin-header.php'; if ( isset( $_REQUEST['updated'] ) && 'true' === $_REQUEST['updated'] && ! empty( $_REQUEST['action'] ) ) { $message = ''; switch ( $_REQUEST['action'] ) { case 'delete': $message = __( 'User deleted.' ); break; case 'all_spam': $message = __( 'Users marked as spam.' ); break; case 'all_notspam': $message = __( 'Users removed from spam.' ); break; case 'all_delete': $message = __( 'Users deleted.' ); break; case 'add': $message = __( 'User added.' ); break; } wp_admin_notice( $message, array( 'type' => 'success', 'dismissible' => true, 'id' => 'message', ) ); } ?>' . __( 'This screen sets and changes options for the network as a whole. The first site is the main site in the network and network options are pulled from that original site’s options.' ) . '
' . '' . __( 'Operational settings has fields for the network’s name and admin email.' ) . '
' . '' . __( 'Registration settings can disable/enable public signups. If you let others sign up for a site, install spam plugins. Spaces, not commas, should separate names banned as sites for this network.' ) . '
' . '' . __( 'New site settings are defaults applied when a new site is created in the network. These include welcome email for when a new site or user account is registered, and what᾿s put in the first post, page, comment, comment author, and comment URL.' ) . '
' . '' . __( 'Upload settings control the size of the uploaded files and the amount of available upload space for each site. You can change the default value for specific sites when you edit a particular site. Allowed file types are also listed (space separated only).' ) . '
' . '' . __( 'You can set the language, and WordPress will automatically download and install the translation files (available if your filesystem is writable).' ) . '
' . '' . __( 'Menu setting enables/disables the plugin menus from appearing for non super admins, so that only super admins, not site admins, have access to activate plugins.' ) . '
' . '' . __( 'Super admins can no longer be added on the Options screen. You must now go to the list of existing users on Network Admin > Users and click on Username or the Edit action link below that name. This goes to an Edit User page where you can check a box to grant super admin privileges.' ) . '
', ) ); get_current_screen()->set_help_sidebar( '' . __( 'For more information:' ) . '
' . '' . __( 'Documentation on Network Settings' ) . '
' . '' . __( 'Support forums' ) . '
' ); if ( $_POST ) { /** This action is documented in wp-admin/network/edit.php */ do_action( 'wpmuadminedit' ); check_admin_referer( 'siteoptions' ); $checked_options = array( 'menu_items' => array(), 'registrationnotification' => 'no', 'upload_space_check_disabled' => 1, 'add_new_users' => 0, ); foreach ( $checked_options as $option_name => $option_unchecked_value ) { if ( ! isset( $_POST[ $option_name ] ) ) { $_POST[ $option_name ] = $option_unchecked_value; } } $options = array( 'registrationnotification', 'registration', 'add_new_users', 'menu_items', 'upload_space_check_disabled', 'blog_upload_space', 'upload_filetypes', 'site_name', 'first_post', 'first_page', 'first_comment', 'first_comment_url', 'first_comment_author', 'welcome_email', 'welcome_user_email', 'fileupload_maxk', 'illegal_names', 'limited_email_domains', 'banned_email_domains', 'WPLANG', 'new_admin_email', 'first_comment_email', ); // Handle translation installation. if ( ! empty( $_POST['WPLANG'] ) && current_user_can( 'install_languages' ) && wp_can_install_language_pack() ) { $language = wp_download_language_pack( $_POST['WPLANG'] ); if ( $language ) { $_POST['WPLANG'] = $language; } } foreach ( $options as $option_name ) { if ( ! isset( $_POST[ $option_name ] ) ) { continue; } $value = wp_unslash( $_POST[ $option_name ] ); update_site_option( $option_name, $value ); } /** * Fires after the network options are updated. * * @since MU (3.0.0) */ do_action( 'update_wpmu_options' ); wp_redirect( add_query_arg( 'updated', 'true', network_admin_url( 'settings.php' ) ) ); exit; } require_once ABSPATH . 'wp-admin/admin-header.php'; if ( isset( $_GET['updated'] ) ) { wp_admin_notice( __( 'Settings saved.' ), array( 'type' => 'success', 'dismissible' => true, 'id' => 'message', ) ); } ?>' . __( 'One of the selected users is not a member of this site.' ) . '
', 403 ); } $user = get_userdata( $user_id ); // If $role is empty, none will be set. $user->set_role( $role ); } } else { $update = 'err_promote'; } break; default: if ( ! isset( $_REQUEST['users'] ) ) { break; } check_admin_referer( 'bulk-users' ); $userids = $_REQUEST['users']; /** This action is documented in wp-admin/network/site-themes.php */ $referer = apply_filters( 'handle_network_bulk_actions-' . get_current_screen()->id, $referer, $action, $userids, $id ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores $update = $action; break; } wp_safe_redirect( add_query_arg( 'update', $update, $referer ) ); exit; } restore_current_blog(); if ( isset( $_GET['action'] ) && 'update-site' === $_GET['action'] ) { wp_safe_redirect( $referer ); exit; } add_screen_option( 'per_page' ); // Used in the HTML title tag. /* translators: %s: Site title. */ $title = sprintf( __( 'Edit Site: %s' ), esc_html( $details->blogname ) ); $parent_file = 'sites.php'; $submenu_file = 'sites.php'; /** * Filters whether to show the Add Existing User form on the Multisite Users screen. * * @since 3.1.0 * * @param bool $bool Whether to show the Add Existing User form. Default true. */ if ( ! wp_is_large_network( 'users' ) && apply_filters( 'show_network_site_users_add_existing_form', true ) ) { wp_enqueue_script( 'user-suggest' ); } require_once ABSPATH . 'wp-admin/admin-header.php'; ?>