set_parentage( $parent_file ); ?>
render_screen_meta(); if ( is_network_admin() ) { /** * Prints network admin screen notices. * * @since 3.1.0 */ do_action( 'network_admin_notices' ); } elseif ( is_user_admin() ) { /** * Prints user admin screen notices. * * @since 3.1.0 */ do_action( 'user_admin_notices' ); } else { /** * Prints admin screen notices. * * @since 3.1.0 */ do_action( 'admin_notices' ); } /** * Prints generic admin screen notices. * * @since 3.1.0 */ do_action( 'all_admin_notices' ); if ( 'options-general.php' === $parent_file ) { require ABSPATH . 'wp-admin/options-head.php'; } PK!|pTToptions-permalink.phpnu[add_help_tab( array( 'id' => 'overview', 'title' => __( 'Overview' ), 'content' => '

' . __( 'Permalinks are the permanent URLs to your individual pages and blog posts, as well as your category and tag archives. A permalink is the web address used to link to your content. The URL to each post should be permanent, and never change — hence the name permalink.' ) . '

' . '

' . __( 'This screen allows you to choose your permalink structure. You can choose from common settings or create custom URL structures.' ) . '

' . '

' . __( 'You must click the Save Changes button at the bottom of the screen for new settings to take effect.' ) . '

', ) ); get_current_screen()->add_help_tab( array( 'id' => 'permalink-settings', 'title' => __( 'Permalink Settings' ), 'content' => '

' . __( 'Permalinks can contain useful information, such as the post date, title, or other elements. You can choose from any of the suggested permalink formats, or you can craft your own if you select Custom Structure.' ) . '

' . '

' . sprintf( /* translators: %s: Percent sign (%). */ __( 'If you pick an option other than Plain, your general URL path with structure tags (terms surrounded by %s) will also appear in the custom structure field and your path can be further modified there.' ), '%' ) . '

' . '

' . sprintf( /* translators: 1: %category%, 2: %tag% */ __( 'When you assign multiple categories or tags to a post, only one can show up in the permalink: the lowest numbered category. This applies if your custom structure includes %1$s or %2$s.' ), '%category%', '%tag%' ) . '

' . '

' . __( 'You must click the Save Changes button at the bottom of the screen for new settings to take effect.' ) . '

', ) ); get_current_screen()->add_help_tab( array( 'id' => 'custom-structures', 'title' => __( 'Custom Structures' ), 'content' => '

' . __( 'The Optional fields let you customize the “category” and “tag” base names that will appear in archive URLs. For example, the page listing all posts in the “Uncategorized” category could be /topics/uncategorized instead of /category/uncategorized.' ) . '

' . '

' . __( 'You must click the Save Changes button at the bottom of the screen for new settings to take effect.' ) . '

', ) ); $help_sidebar_content = '

' . __( 'For more information:' ) . '

' . '

' . __( 'Documentation on Permalinks Settings' ) . '

' . '

' . __( 'Documentation on Using Permalinks' ) . '

'; if ( $is_nginx ) { $help_sidebar_content .= '

' . __( 'Documentation on Nginx configuration.' ) . '

'; } $help_sidebar_content .= '

' . __( 'Support forums' ) . '

'; get_current_screen()->set_help_sidebar( $help_sidebar_content ); unset( $help_sidebar_content ); $home_path = get_home_path(); $iis7_permalinks = iis7_supports_permalinks(); $permalink_structure = get_option( 'permalink_structure' ); $index_php_prefix = ''; $blog_prefix = ''; if ( ! got_url_rewrite() ) { $index_php_prefix = '/index.php'; } /* * In a subdirectory configuration of multisite, the `/blog` prefix is used by * default on the main site to avoid collisions with other sites created on that * network. If the `permalink_structure` option has been changed to remove this * base prefix, WordPress core can no longer account for the possible collision. */ if ( is_multisite() && ! is_subdomain_install() && is_main_site() && str_starts_with( $permalink_structure, '/blog/' ) ) { $blog_prefix = '/blog'; } $category_base = get_option( 'category_base' ); $tag_base = get_option( 'tag_base' ); $structure_updated = false; $htaccess_update_required = false; if ( isset( $_POST['permalink_structure'] ) || isset( $_POST['category_base'] ) ) { check_admin_referer( 'update-permalink' ); if ( isset( $_POST['permalink_structure'] ) ) { if ( isset( $_POST['selection'] ) && 'custom' !== $_POST['selection'] ) { $permalink_structure = $_POST['selection']; } else { $permalink_structure = $_POST['permalink_structure']; } if ( ! empty( $permalink_structure ) ) { $permalink_structure = preg_replace( '#/+#', '/', '/' . str_replace( '#', '', $permalink_structure ) ); if ( $index_php_prefix && $blog_prefix ) { $permalink_structure = $index_php_prefix . preg_replace( '#^/?index\.php#', '', $permalink_structure ); } else { $permalink_structure = $blog_prefix . $permalink_structure; } } $permalink_structure = sanitize_option( 'permalink_structure', $permalink_structure ); $wp_rewrite->set_permalink_structure( $permalink_structure ); $structure_updated = true; } if ( isset( $_POST['category_base'] ) ) { $category_base = $_POST['category_base']; if ( ! empty( $category_base ) ) { $category_base = $blog_prefix . preg_replace( '#/+#', '/', '/' . str_replace( '#', '', $category_base ) ); } $wp_rewrite->set_category_base( $category_base ); } if ( isset( $_POST['tag_base'] ) ) { $tag_base = $_POST['tag_base']; if ( ! empty( $tag_base ) ) { $tag_base = $blog_prefix . preg_replace( '#/+#', '/', '/' . str_replace( '#', '', $tag_base ) ); } $wp_rewrite->set_tag_base( $tag_base ); } } if ( $iis7_permalinks ) { if ( ( ! file_exists( $home_path . 'web.config' ) && win_is_writable( $home_path ) ) || win_is_writable( $home_path . 'web.config' ) ) { $writable = true; } else { $writable = false; } } elseif ( $is_nginx || $is_caddy ) { $writable = false; } else { if ( ( ! file_exists( $home_path . '.htaccess' ) && is_writable( $home_path ) ) || is_writable( $home_path . '.htaccess' ) ) { $writable = true; } else { $writable = false; $existing_rules = array_filter( extract_from_markers( $home_path . '.htaccess', 'WordPress' ) ); $new_rules = array_filter( explode( "\n", $wp_rewrite->mod_rewrite_rules() ) ); $htaccess_update_required = ( $new_rules !== $existing_rules ); } } $using_index_permalinks = $wp_rewrite->using_index_permalinks(); if ( $structure_updated ) { $message = __( 'Permalink structure updated.' ); if ( ! is_multisite() && $permalink_structure && ! $using_index_permalinks ) { if ( $iis7_permalinks ) { if ( ! $writable ) { $message = sprintf( /* translators: %s: web.config */ __( 'You should update your %s file now.' ), 'web.config' ); } else { $message = sprintf( /* translators: %s: web.config */ __( 'Permalink structure updated. Remove write access on %s file now!' ), 'web.config' ); } } elseif ( ! $is_nginx && ! $is_caddy && $htaccess_update_required && ! $writable ) { $message = sprintf( /* translators: %s: .htaccess */ __( 'You should update your %s file now.' ), '.htaccess' ); } } if ( ! get_settings_errors() ) { add_settings_error( 'general', 'settings_updated', $message, 'success' ); } set_transient( 'settings_errors', get_settings_errors(), 30 ); // 30 seconds. wp_redirect( admin_url( 'options-permalink.php?settings-updated=true' ) ); exit; } flush_rewrite_rules(); require_once ABSPATH . 'wp-admin/admin-header.php'; ?>

number of tags are available, and here are some examples to get you started.' ), __( 'https://wordpress.org/documentation/article/customize-permalinks/' ) ); ?>

'plain', 'label' => __( 'Plain' ), 'value' => '', 'example' => home_url( '/?p=123' ), ), array( 'id' => 'day-name', 'label' => __( 'Day and name' ), 'value' => $index_php_prefix . '/%year%/%monthnum%/%day%/%postname%/', 'example' => $url_base . '/' . gmdate( 'Y/m/d' ) . '/' . _x( 'sample-post', 'sample permalink structure' ) . '/', ), array( 'id' => 'month-name', 'label' => __( 'Month and name' ), 'value' => $index_php_prefix . '/%year%/%monthnum%/%postname%/', 'example' => $url_base . '/' . gmdate( 'Y/m' ) . '/' . _x( 'sample-post', 'sample permalink structure' ) . '/', ), array( 'id' => 'numeric', 'label' => __( 'Numeric' ), 'value' => $index_php_prefix . '/' . _x( 'archives', 'sample permalink base' ) . '/%post_id%', 'example' => $url_base . '/' . _x( 'archives', 'sample permalink base' ) . '/123', ), array( 'id' => 'post-name', 'label' => __( 'Post name' ), 'value' => $index_php_prefix . '/%postname%/', 'example' => $url_base . '/' . _x( 'sample-post', 'sample permalink structure' ) . '/', ), ); $default_structure_values = wp_list_pluck( $default_structures, 'value' ); $available_tags = array( /* translators: %s: Permalink structure tag. */ 'year' => __( '%s (The year of the post, four digits, for example 2004.)' ), /* translators: %s: Permalink structure tag. */ 'monthnum' => __( '%s (Month of the year, for example 05.)' ), /* translators: %s: Permalink structure tag. */ 'day' => __( '%s (Day of the month, for example 28.)' ), /* translators: %s: Permalink structure tag. */ 'hour' => __( '%s (Hour of the day, for example 15.)' ), /* translators: %s: Permalink structure tag. */ 'minute' => __( '%s (Minute of the hour, for example 43.)' ), /* translators: %s: Permalink structure tag. */ 'second' => __( '%s (Second of the minute, for example 33.)' ), /* translators: %s: Permalink structure tag. */ 'post_id' => __( '%s (The unique ID of the post, for example 423.)' ), /* translators: %s: Permalink structure tag. */ 'postname' => __( '%s (The sanitized post title (slug).)' ), /* translators: %s: Permalink structure tag. */ 'category' => __( '%s (Category slug. Nested sub-categories appear as nested directories in the URL.)' ), /* translators: %s: Permalink structure tag. */ 'author' => __( '%s (A sanitized version of the author name.)' ), ); /** * Filters the list of available permalink structure tags on the Permalinks settings page. * * @since 4.9.0 * * @param string[] $available_tags An array of key => value pairs of available permalink structure tags. */ $available_tags = apply_filters( 'available_permalink_structure_tags', $available_tags ); /* translators: %s: Permalink structure tag. */ $tag_added = __( '%s added to permalink structure' ); /* translators: %s: Permalink structure tag. */ $tag_removed = __( '%s removed from permalink structure' ); /* translators: %s: Permalink structure tag. */ $tag_already_used = __( '%s (already used in permalink structure)' ); ?>

%postname%' ); ?>

topics as your category base would make your category links like %s/topics/uncategorized/. If you leave these blank the defaults will be used.' ), $url_base ); ?>

Error: Your %1$s file is not writable, so updating it automatically was not possible. This is the URL rewrite rule you should have in your %1$s file. Click in the field and press %3$s (or %4$s on Mac) to select all. Then insert this rule inside of the %5$s element in %1$s file.' ), 'web.config', __( 'https://developer.wordpress.org/advanced-administration/server/file-permissions/' ), 'Ctrl + A', '⌘ + A', '/<configuration>/<system.webServer>/<rewrite>/<rules>' ); ?>


web.config' ); ?>

Error: The root directory of your site is not writable, so creating a file automatically was not possible. This is the URL rewrite rule you should have in your %2$s file. Create a new file called %2$s in the root directory of your site. Click in the field and press %3$s (or %4$s on Mac) to select all. Then insert this code into the %2$s file.' ), __( 'https://developer.wordpress.org/advanced-administration/server/file-permissions/' ), 'web.config', 'Ctrl + A', '⌘ + A' ); ?>


web.config' ); ?>

Error: Your %1$s file is not writable, so updating it automatically was not possible. These are the mod_rewrite rules you should have in your %1$s file. Click in the field and press %3$s (or %4$s on Mac) to select all.' ), '.htaccess', __( 'https://developer.wordpress.org/advanced-administration/server/file-permissions/' ), 'Ctrl + A', '⌘ + A' ); ?>


PK!4`!`!edit-form-comment.phpnu[
comment_ID ); ?>

comment_post_ID > 0 ) : $comment_link = get_comment_link( $comment ); ?>

'strong,em,link,block,del,ins,img,ul,ol,li,code,close' ); wp_editor( $comment->comment_content, 'content', array( 'media_buttons' => false, 'tinymce' => false, 'quicktags' => $quicktags_settings, ) ); wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false ); ?>

comment_approved ) { case '1': _e( 'Approved' ); break; case '0': _e( 'Pending' ); break; case 'spam': _e( 'Spam' ); break; } ?>


comment_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( $comment->comment_date ) ) ); ?> ' . $submitted . '' ); ?>
comment_post_ID; if ( current_user_can( 'edit_post', $post_id ) ) { $post_link = ""; $post_link .= esc_html( get_the_title( $post_id ) ) . ''; } else { $post_link = esc_html( get_the_title( $post_id ) ); } ?>
' . $post_link . '' ); ?>
comment_parent ) : $parent = get_comment( $comment->comment_parent ); if ( $parent ) : $parent_link = esc_url( get_comment_link( $parent ) ); $name = get_comment_author( $parent ); ?>
' . $name . '' ); ?>
comment_ID&_wp_original_http_referer=" . urlencode( wp_get_referer() ), 'delete-comment_' . $comment->comment_ID ) . "'>" . ( ! EMPTY_TRASH_DAYS ? __( 'Delete Permanently' ) : __( 'Move to Trash' ) ) . "\n"; ?>
' . __( 'You need a higher level of permission.' ) . '' . '

' . __( 'Sorry, you are not allowed to edit theme options on this site.' ) . '

', 403 ); } if ( ! current_theme_supports( 'widgets' ) ) { wp_die( __( 'The theme you are currently using is not widget-aware, meaning that it has no sidebars that you are able to change. For information on making your theme widget-aware, please follow these instructions.' ) ); } // Used in the HTML title tag. $title = __( 'Widgets' ); $parent_file = 'themes.php'; if ( wp_use_widgets_block_editor() ) { require ABSPATH . 'wp-admin/widgets-form-blocks.php'; } else { require ABSPATH . 'wp-admin/widgets-form.php'; } PK!KMMedit.phpnu[ true ) ), true ) ) { wp_die( __( 'Sorry, you are not allowed to edit posts in this post type.' ) ); } if ( 'attachment' === $typenow ) { if ( wp_redirect( admin_url( 'upload.php' ) ) ) { exit; } } /** * @global string $post_type Global post type. * @global WP_Post_Type $post_type_object Global post type object. */ global $post_type, $post_type_object; $post_type = $typenow; $post_type_object = get_post_type_object( $post_type ); if ( ! $post_type_object ) { wp_die( __( 'Invalid post type.' ) ); } if ( ! current_user_can( $post_type_object->cap->edit_posts ) ) { wp_die( '

' . __( 'You need a higher level of permission.' ) . '

' . '

' . __( 'Sorry, you are not allowed to edit posts in this post type.' ) . '

', 403 ); } $wp_list_table = _get_list_table( 'WP_Posts_List_Table' ); $pagenum = $wp_list_table->get_pagenum(); // Back-compat for viewing comments of an entry. foreach ( array( 'p', 'attachment_id', 'page_id' ) as $_redirect ) { if ( ! empty( $_REQUEST[ $_redirect ] ) ) { wp_redirect( admin_url( 'edit-comments.php?p=' . absint( $_REQUEST[ $_redirect ] ) ) ); exit; } } unset( $_redirect ); if ( 'post' !== $post_type ) { $parent_file = "edit.php?post_type=$post_type"; $submenu_file = "edit.php?post_type=$post_type"; $post_new_file = "post-new.php?post_type=$post_type"; } else { $parent_file = 'edit.php'; $submenu_file = 'edit.php'; $post_new_file = 'post-new.php'; } $doaction = $wp_list_table->current_action(); if ( $doaction ) { check_admin_referer( 'bulk-posts' ); $sendback = remove_query_arg( array( 'trashed', 'untrashed', 'deleted', 'locked', 'ids' ), wp_get_referer() ); if ( ! $sendback ) { $sendback = admin_url( $parent_file ); } $sendback = add_query_arg( 'paged', $pagenum, $sendback ); if ( str_contains( $sendback, 'post.php' ) ) { $sendback = admin_url( $post_new_file ); } $post_ids = array(); if ( 'delete_all' === $doaction ) { // Prepare for deletion of all posts with a specified post status (i.e. Empty Trash). $post_status = preg_replace( '/[^a-z0-9_-]+/i', '', $_REQUEST['post_status'] ); // Validate the post status exists. if ( get_post_status_object( $post_status ) ) { /** * @global wpdb $wpdb WordPress database abstraction object. */ global $wpdb; $post_ids = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_type=%s AND post_status = %s", $post_type, $post_status ) ); } $doaction = 'delete'; } elseif ( isset( $_REQUEST['media'] ) ) { $post_ids = $_REQUEST['media']; } elseif ( isset( $_REQUEST['ids'] ) ) { $post_ids = explode( ',', $_REQUEST['ids'] ); } elseif ( ! empty( $_REQUEST['post'] ) ) { $post_ids = array_map( 'intval', $_REQUEST['post'] ); } if ( empty( $post_ids ) ) { wp_redirect( $sendback ); exit; } switch ( $doaction ) { case 'trash': $trashed = 0; $locked = 0; foreach ( (array) $post_ids as $post_id ) { if ( ! current_user_can( 'delete_post', $post_id ) ) { wp_die( __( 'Sorry, you are not allowed to move this item to the Trash.' ) ); } if ( wp_check_post_lock( $post_id ) ) { ++$locked; continue; } if ( ! wp_trash_post( $post_id ) ) { wp_die( __( 'Error in moving the item to Trash.' ) ); } ++$trashed; } $sendback = add_query_arg( array( 'trashed' => $trashed, 'ids' => implode( ',', $post_ids ), 'locked' => $locked, ), $sendback ); break; case 'untrash': $untrashed = 0; if ( isset( $_GET['doaction'] ) && ( 'undo' === $_GET['doaction'] ) ) { add_filter( 'wp_untrash_post_status', 'wp_untrash_post_set_previous_status', 10, 3 ); } foreach ( (array) $post_ids as $post_id ) { if ( ! current_user_can( 'delete_post', $post_id ) ) { wp_die( __( 'Sorry, you are not allowed to restore this item from the Trash.' ) ); } if ( ! wp_untrash_post( $post_id ) ) { wp_die( __( 'Error in restoring the item from Trash.' ) ); } ++$untrashed; } $sendback = add_query_arg( 'untrashed', $untrashed, $sendback ); remove_filter( 'wp_untrash_post_status', 'wp_untrash_post_set_previous_status', 10 ); break; case 'delete': $deleted = 0; foreach ( (array) $post_ids as $post_id ) { $post_del = get_post( $post_id ); if ( ! current_user_can( 'delete_post', $post_id ) ) { wp_die( __( 'Sorry, you are not allowed to delete this item.' ) ); } if ( 'attachment' === $post_del->post_type ) { if ( ! wp_delete_attachment( $post_id ) ) { wp_die( __( 'Error in deleting the attachment.' ) ); } } else { if ( ! wp_delete_post( $post_id ) ) { wp_die( __( 'Error in deleting the item.' ) ); } } ++$deleted; } $sendback = add_query_arg( 'deleted', $deleted, $sendback ); break; case 'edit': if ( isset( $_REQUEST['bulk_edit'] ) ) { $done = bulk_edit_posts( $_REQUEST ); if ( is_array( $done ) ) { $done['updated'] = count( $done['updated'] ); $done['skipped'] = count( $done['skipped'] ); $done['locked'] = count( $done['locked'] ); $sendback = add_query_arg( $done, $sendback ); } } break; default: $screen = get_current_screen()->id; /** * Fires when a custom bulk action should be handled. * * The redirect link should be modified with success or failure feedback * from the action to be used to display feedback to the user. * * The dynamic portion of the hook name, `$screen`, refers to the current screen ID. * * @since 4.7.0 * * @param string $sendback The redirect URL. * @param string $doaction The action being taken. * @param array $items The items to take the action on. Accepts an array of IDs of posts, * comments, terms, links, plugins, attachments, or users. */ $sendback = apply_filters( "handle_bulk_actions-{$screen}", $sendback, $doaction, $post_ids ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores break; } $sendback = remove_query_arg( array( 'action', 'action2', 'tags_input', 'post_author', 'comment_status', 'ping_status', '_status', 'post', 'bulk_edit', 'post_view' ), $sendback ); wp_redirect( $sendback ); exit; } elseif ( ! empty( $_REQUEST['_wp_http_referer'] ) ) { wp_redirect( remove_query_arg( array( '_wp_http_referer', '_wpnonce' ), wp_unslash( $_SERVER['REQUEST_URI'] ) ) ); exit; } $wp_list_table->prepare_items(); wp_enqueue_script( 'inline-edit-post' ); wp_enqueue_script( 'heartbeat' ); if ( 'wp_block' === $post_type ) { wp_enqueue_script( 'wp-list-reusable-blocks' ); wp_enqueue_style( 'wp-list-reusable-blocks' ); } // Used in the HTML title tag. $title = $post_type_object->labels->name; if ( 'post' === $post_type ) { get_current_screen()->add_help_tab( array( 'id' => 'overview', 'title' => __( 'Overview' ), 'content' => '

' . __( 'This screen provides access to all of your posts. You can customize the display of this screen to suit your workflow.' ) . '

', ) ); get_current_screen()->add_help_tab( array( 'id' => 'screen-content', 'title' => __( 'Screen Content' ), 'content' => '

' . __( 'You can customize the display of this screen’s contents in a number of ways:' ) . '

' . '
    ' . '
  • ' . __( 'You can hide/display columns based on your needs and decide how many posts to list per screen using the Screen Options tab.' ) . '
  • ' . '
  • ' . __( 'You can filter the list of posts by post status using the text links above the posts list to only show posts with that status. The default view is to show all posts.' ) . '
  • ' . '
  • ' . __( 'You can view posts in a simple title list or with an excerpt using the Screen Options tab.' ) . '
  • ' . '
  • ' . __( 'You can refine the list to show only posts in a specific category or from a specific month by using the dropdown menus above the posts list. Click the Filter button after making your selection. You also can refine the list by clicking on the post author, category or tag in the posts list.' ) . '
  • ' . '
', ) ); get_current_screen()->add_help_tab( array( 'id' => 'action-links', 'title' => __( 'Available Actions' ), 'content' => '

' . __( 'Hovering over a row in the posts list will display action links that allow you to manage your post. You can perform the following actions:' ) . '

' . '
    ' . '
  • ' . __( 'Edit takes you to the editing screen for that post. You can also reach that screen by clicking on the post title.' ) . '
  • ' . '
  • ' . __( 'Quick Edit provides inline access to the metadata of your post, allowing you to update post details without leaving this screen.' ) . '
  • ' . '
  • ' . __( 'Trash removes your post from this list and places it in the Trash, from which you can permanently delete it.' ) . '
  • ' . '
  • ' . __( 'Preview will show you what your draft post will look like if you publish it. View will take you to your live site to view the post. Which link is available depends on your post’s status.' ) . '
  • ' . '
', ) ); get_current_screen()->add_help_tab( array( 'id' => 'bulk-actions', 'title' => __( 'Bulk actions' ), 'content' => '

' . __( 'You can also edit or move multiple posts to the Trash at once. Select the posts you want to act on using the checkboxes, then select the action you want to take from the Bulk actions menu and click Apply.' ) . '

' . '

' . sprintf( /* translators: %s: The dismiss dashicon used for buttons that dismiss or remove. */ __( 'When using Bulk Edit, you can change the metadata (categories, author, etc.) for all selected posts at once. To remove a post from the grouping, just click the %sremove button next to its name in the Bulk Edit area that appears.' ), '' ) . '

', ) ); get_current_screen()->set_help_sidebar( '

' . __( 'For more information:' ) . '

' . '

' . __( 'Documentation on Managing Posts' ) . '

' . '

' . __( 'Support forums' ) . '

' ); } elseif ( 'page' === $post_type ) { get_current_screen()->add_help_tab( array( 'id' => 'overview', 'title' => __( 'Overview' ), 'content' => '

' . __( '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.' ) . '

', ) ); get_current_screen()->add_help_tab( array( 'id' => 'managing-pages', 'title' => __( 'Managing Pages' ), 'content' => '

' . __( 'Managing pages is very similar to managing posts, and the screens can be customized in the same way.' ) . '

' . '

' . __( 'You can also perform the same types of actions, including narrowing the list by using the filters, acting on a page using the action links that appear when you hover over a row, or using the Bulk actions menu to edit the metadata for multiple pages at once.' ) . '

', ) ); get_current_screen()->set_help_sidebar( '

' . __( 'For more information:' ) . '

' . '

' . __( 'Documentation on Managing Pages' ) . '

' . '

' . __( 'Support forums' ) . '

' ); } get_current_screen()->set_screen_reader_content( array( 'heading_views' => $post_type_object->labels->filter_items_list, 'heading_pagination' => $post_type_object->labels->items_list_navigation, 'heading_list' => $post_type_object->labels->items_list, ) ); add_screen_option( 'per_page', array( 'default' => 20, 'option' => 'edit_' . $post_type . '_per_page', ) ); $bulk_counts = array( 'updated' => isset( $_REQUEST['updated'] ) ? absint( $_REQUEST['updated'] ) : 0, 'locked' => isset( $_REQUEST['locked'] ) ? absint( $_REQUEST['locked'] ) : 0, 'deleted' => isset( $_REQUEST['deleted'] ) ? absint( $_REQUEST['deleted'] ) : 0, 'trashed' => isset( $_REQUEST['trashed'] ) ? absint( $_REQUEST['trashed'] ) : 0, 'untrashed' => isset( $_REQUEST['untrashed'] ) ? absint( $_REQUEST['untrashed'] ) : 0, ); $bulk_messages = array(); $bulk_messages['post'] = array( /* translators: %s: Number of posts. */ 'updated' => _n( '%s post updated.', '%s posts updated.', $bulk_counts['updated'] ), 'locked' => ( 1 === $bulk_counts['locked'] ) ? __( '1 post not updated, somebody is editing it.' ) : /* translators: %s: Number of posts. */ _n( '%s post not updated, somebody is editing it.', '%s posts not updated, somebody is editing them.', $bulk_counts['locked'] ), /* translators: %s: Number of posts. */ 'deleted' => _n( '%s post permanently deleted.', '%s posts permanently deleted.', $bulk_counts['deleted'] ), /* translators: %s: Number of posts. */ 'trashed' => _n( '%s post moved to the Trash.', '%s posts moved to the Trash.', $bulk_counts['trashed'] ), /* translators: %s: Number of posts. */ 'untrashed' => _n( '%s post restored from the Trash.', '%s posts restored from the Trash.', $bulk_counts['untrashed'] ), ); $bulk_messages['page'] = array( /* translators: %s: Number of pages. */ 'updated' => _n( '%s page updated.', '%s pages updated.', $bulk_counts['updated'] ), 'locked' => ( 1 === $bulk_counts['locked'] ) ? __( '1 page not updated, somebody is editing it.' ) : /* translators: %s: Number of pages. */ _n( '%s page not updated, somebody is editing it.', '%s pages not updated, somebody is editing them.', $bulk_counts['locked'] ), /* translators: %s: Number of pages. */ 'deleted' => _n( '%s page permanently deleted.', '%s pages permanently deleted.', $bulk_counts['deleted'] ), /* translators: %s: Number of pages. */ 'trashed' => _n( '%s page moved to the Trash.', '%s pages moved to the Trash.', $bulk_counts['trashed'] ), /* translators: %s: Number of pages. */ 'untrashed' => _n( '%s page restored from the Trash.', '%s pages restored from the Trash.', $bulk_counts['untrashed'] ), ); $bulk_messages['wp_block'] = array( /* translators: %s: Number of patterns. */ 'updated' => _n( '%s pattern updated.', '%s patterns updated.', $bulk_counts['updated'] ), 'locked' => ( 1 === $bulk_counts['locked'] ) ? __( '1 pattern not updated, somebody is editing it.' ) : /* translators: %s: Number of patterns. */ _n( '%s pattern not updated, somebody is editing it.', '%s patterns not updated, somebody is editing them.', $bulk_counts['locked'] ), /* translators: %s: Number of patterns. */ 'deleted' => _n( '%s pattern permanently deleted.', '%s patterns permanently deleted.', $bulk_counts['deleted'] ), /* translators: %s: Number of patterns. */ 'trashed' => _n( '%s pattern moved to the Trash.', '%s patterns moved to the Trash.', $bulk_counts['trashed'] ), /* translators: %s: Number of patterns. */ 'untrashed' => _n( '%s pattern restored from the Trash.', '%s patterns restored from the Trash.', $bulk_counts['untrashed'] ), ); /** * Filters the bulk action updated messages. * * By default, custom post types use the messages for the 'post' post type. * * @since 3.7.0 * * @param array[] $bulk_messages Arrays of messages, each keyed by the corresponding post type. Messages are * keyed with 'updated', 'locked', 'deleted', 'trashed', and 'untrashed'. * @param int[] $bulk_counts Array of item counts for each message, used to build internationalized strings. */ $bulk_messages = apply_filters( 'bulk_post_updated_messages', $bulk_messages, $bulk_counts ); $bulk_counts = array_filter( $bulk_counts ); require_once ABSPATH . 'wp-admin/admin-header.php'; ?>

labels->name ); ?>

cap->create_posts ) ) { echo ' ' . esc_html( $post_type_object->labels->add_new_item ) . ''; } if ( isset( $_REQUEST['s'] ) && strlen( $_REQUEST['s'] ) ) { echo ''; printf( /* translators: %s: Search query. */ __( 'Search results for: %s' ), '' . get_search_query() . '' ); echo ''; } ?>
$count ) { if ( isset( $bulk_messages[ $post_type ][ $message ] ) ) { $messages[] = sprintf( $bulk_messages[ $post_type ][ $message ], number_format_i18n( $count ) ); } elseif ( isset( $bulk_messages['post'][ $message ] ) ) { $messages[] = sprintf( $bulk_messages['post'][ $message ], number_format_i18n( $count ) ); } if ( 'trashed' === $message && isset( $_REQUEST['ids'] ) ) { $ids = preg_replace( '/[^0-9,]/', '', $_REQUEST['ids'] ); $messages[] = sprintf( '%2$s', esc_url( wp_nonce_url( "edit.php?post_type=$post_type&doaction=undo&action=untrash&ids=$ids", 'bulk-posts' ) ), __( 'Undo' ) ); } if ( 'untrashed' === $message && isset( $_REQUEST['ids'] ) ) { $ids = explode( ',', $_REQUEST['ids'] ); if ( 1 === count( $ids ) && current_user_can( 'edit_post', $ids[0] ) ) { $messages[] = sprintf( '%2$s', esc_url( get_edit_post_link( $ids[0] ) ), esc_html( get_post_type_object( get_post_type( $ids[0] ) )->labels->edit_item ) ); } } } if ( $messages ) { wp_admin_notice( implode( ' ', $messages ), array( 'id' => 'message', 'additional_classes' => array( 'updated' ), 'dismissible' => true, ) ); } unset( $messages ); $_SERVER['REQUEST_URI'] = remove_query_arg( array( 'locked', 'skipped', 'updated', 'deleted', 'trashed', 'untrashed' ), $_SERVER['REQUEST_URI'] ); ?> views(); ?>
search_box( $post_type_object->labels->search_items, 'post' ); ?> display(); ?>
has_items() ) { $wp_list_table->inline_edit(); } ?>
post_type ) { wp_die( __( 'Invalid post type.' ) ); } switch ( $_REQUEST['fetch'] ) { case 3: ?>
'; } // Title shouldn't ever be empty, but use filename just in case. $file = get_attached_file( $post->ID ); $file_url = wp_get_attachment_url( $post->ID ); $title = $post->post_title ? $post->post_title : wp_basename( $file ); ?>
' . _x( 'Edit', 'media item' ) . ''; } else { echo '' . _x( 'Success', 'media item' ) . ''; } ?>
false, 'delete' => true, ) ); break; default: add_filter( 'attachment_fields_to_edit', 'media_post_single_attachment_fields_to_edit', 10, 2 ); echo get_media_item( $id ); break; } exit; } check_admin_referer( 'media-form' ); $post_id = 0; if ( isset( $_REQUEST['post_id'] ) ) { $post_id = absint( $_REQUEST['post_id'] ); if ( ! get_post( $post_id ) || ! current_user_can( 'edit_post', $post_id ) ) { $post_id = 0; } } $id = media_handle_upload( 'async-upload', $post_id ); if ( is_wp_error( $id ) ) { $message = sprintf( '%s %s
%s', sprintf( '', __( 'Dismiss' ) ), sprintf( /* translators: %s: Name of the file that failed to upload. */ __( '“%s” has failed to upload.' ), esc_html( $_FILES['async-upload']['name'] ) ), esc_html( $id->get_error_message() ) ); wp_admin_notice( $message, array( 'additional_classes' => array( 'error-div', 'error' ), 'paragraph_wrap' => false, ) ); exit; } if ( $_REQUEST['short'] ) { // Short form response - attachment ID only. echo $id; } else { // Long form response - big chunk of HTML. $type = $_REQUEST['type']; /** * Filters the returned ID of an uploaded attachment. * * The dynamic portion of the hook name, `$type`, refers to the attachment type. * * Possible hook names include: * * - `async_upload_audio` * - `async_upload_file` * - `async_upload_image` * - `async_upload_video` * * @since 2.5.0 * * @param int $id Uploaded attachment ID. */ echo apply_filters( "async_upload_{$type}", $id ); } PK!ޭ=,, export.phpnu[ add_help_tab( array( 'id' => 'overview', 'title' => __( 'Overview' ), 'content' => '

' . __( 'You can export a file of your site’s content in order to import it into another installation or platform. The export file will be an XML file format called WXR. Posts, pages, comments, custom fields, categories, and tags can be included. You can choose for the WXR file to include only certain posts or pages by setting the dropdown filters to limit the export by category, author, date range by month, or publishing status.' ) . '

' . '

' . __( 'Once generated, your WXR file can be imported by another WordPress site or by another blogging platform able to access this format.' ) . '

', ) ); get_current_screen()->set_help_sidebar( '

' . __( 'For more information:' ) . '

' . '

' . __( 'Documentation on Export' ) . '

' . '

' . __( 'Support forums' ) . '

' ); // If the 'download' URL parameter is set, a WXR export file is baked and returned. if ( isset( $_GET['download'] ) ) { $args = array(); if ( ! isset( $_GET['content'] ) || 'all' === $_GET['content'] ) { $args['content'] = 'all'; } elseif ( 'posts' === $_GET['content'] ) { $args['content'] = 'post'; if ( $_GET['cat'] ) { $args['category'] = (int) $_GET['cat']; } if ( $_GET['post_author'] ) { $args['author'] = (int) $_GET['post_author']; } if ( $_GET['post_start_date'] || $_GET['post_end_date'] ) { $args['start_date'] = $_GET['post_start_date']; $args['end_date'] = $_GET['post_end_date']; } if ( $_GET['post_status'] ) { $args['status'] = $_GET['post_status']; } } elseif ( 'pages' === $_GET['content'] ) { $args['content'] = 'page'; if ( $_GET['page_author'] ) { $args['author'] = (int) $_GET['page_author']; } if ( $_GET['page_start_date'] || $_GET['page_end_date'] ) { $args['start_date'] = $_GET['page_start_date']; $args['end_date'] = $_GET['page_end_date']; } if ( $_GET['page_status'] ) { $args['status'] = $_GET['page_status']; } } elseif ( 'attachment' === $_GET['content'] ) { $args['content'] = 'attachment'; if ( $_GET['attachment_start_date'] || $_GET['attachment_end_date'] ) { $args['start_date'] = $_GET['attachment_start_date']; $args['end_date'] = $_GET['attachment_end_date']; } } else { $args['content'] = $_GET['content']; } /** * Filters the export args. * * @since 3.5.0 * * @param array $args The arguments to send to the exporter. */ $args = apply_filters( 'export_args', $args ); export_wp( $args ); die(); } require_once ABSPATH . 'wp-admin/admin-header.php'; /** * Creates the date options fields for exporting a given post type. * * @since 3.1.0 * * @global wpdb $wpdb WordPress database abstraction object. * @global WP_Locale $wp_locale WordPress date and time locale object. * * @param string $post_type The post type. Default 'post'. */ function export_date_options( $post_type = 'post' ) { global $wpdb, $wp_locale; $months = $wpdb->get_results( $wpdb->prepare( "SELECT DISTINCT YEAR( post_date ) AS year, MONTH( post_date ) AS month FROM $wpdb->posts WHERE post_type = %s AND post_status != 'auto-draft' ORDER BY post_date DESC", $post_type ) ); $month_count = count( $months ); if ( ! $month_count || ( 1 === $month_count && 0 === (int) $months[0]->month ) ) { return; } foreach ( $months as $date ) { if ( 0 === (int) $date->year ) { continue; } $month = zeroise( $date->month, 2 ); printf( '', esc_attr( $date->year . '-' . $month ), $wp_locale->get_month( $month ) . ' ' . $date->year ); } } ?>

false, 'can_export' => true, ), 'objects' ) as $post_type ) : ?>

PK!L ms-users.phpnu[' . __( 'The fields on this screen determine some of the basics of your site setup.' ) . '

' . '

' . __( 'Most themes show the site title at the top of every page, in the title bar of the browser, and as the identifying name for syndicated feeds. Many themes also show the tagline.' ) . '

'; if ( ! is_multisite() ) { $options_help .= '

' . __( 'Two terms you will want to know are the WordPress URL and the site URL. The WordPress URL is where the core WordPress installation files are, and the site URL is the address a visitor uses in the browser to go to your site.' ) . '

' . '

' . sprintf( /* translators: %s: Documentation URL. */ __( 'Though the terms refer to two different concepts, in practice, they can be the same address or different. For example, you can have the core WordPress installation files in the root directory (https://example.com), in which case the two URLs would be the same. Or the WordPress files can be in a subdirectory (https://example.com/wordpress). In that case, the WordPress URL and the site URL would be different.' ), __( 'https://developer.wordpress.org/advanced-administration/server/wordpress-in-directory/' ) ) . '

' . '

' . sprintf( /* translators: 1: http://, 2: https:// */ __( 'Both WordPress URL and site URL can start with either %1$s or %2$s. A URL starting with %2$s requires an SSL certificate, so be sure that you have one before changing to %2$s. With %2$s, a padlock will appear next to the address in the browser address bar. Both %2$s and the padlock signal that your site meets some basic security requirements, which can build trust with your visitors and with search engines.' ), 'http://', 'https://' ) . '

' . '

' . __( 'If you want site visitors to be able to register themselves, check the membership box. If you want the site administrator to register every new user, leave the box unchecked. In either case, you can set a default user role for all new users.' ) . '

'; } $options_help .= '

' . __( 'You can set the language, and WordPress will automatically download and install the translation files (available if your filesystem is writable).' ) . '

' . '

' . __( 'UTC means Coordinated Universal Time.' ) . '

' . '

' . __( 'You must click the Save Changes button at the bottom of the screen for new settings to take effect.' ) . '

'; get_current_screen()->add_help_tab( array( 'id' => 'overview', 'title' => __( 'Overview' ), 'content' => $options_help, ) ); get_current_screen()->set_help_sidebar( '

' . __( 'For more information:' ) . '

' . '

' . __( 'Documentation on General Settings' ) . '

' . '

' . __( 'Support forums' ) . '

' ); require_once ABSPATH . 'wp-admin/admin-header.php'; ?>

site_name ); } $tagline_description = sprintf( /* translators: %s: Site tagline example. */ __( 'In a few words, explain what this site is about. Example: “%s.”' ), $sample_tagline ); ?>
PK!fj ms-sites.phpnu[ _x( 'Status', 'Site Health' ), /* translators: Tab heading for Site Health Info page. */ 'debug' => _x( 'Info', 'Site Health' ), ); /** * Filters the extra tabs for the Site Health navigation bar. * * Add a custom page to the Site Health screen, based on a tab slug and label. * The label you provide will also be used as part of the site title. * * @since 5.8.0 * * @param string[] $tabs An associative array of tab labels keyed by their slug. */ $tabs = apply_filters( 'site_health_navigation_tabs', $tabs ); $wrapper_classes = array( 'health-check-tabs-wrapper', 'hide-if-no-js', 'tab-count-' . count( $tabs ), ); $current_tab = ( isset( $_GET['tab'] ) ? $_GET['tab'] : '' ); $title = sprintf( // translators: %s: The currently displayed tab. __( 'Site Health - %s' ), ( isset( $tabs[ $current_tab ] ) ? esc_html( $tabs[ $current_tab ] ) : esc_html( reset( $tabs ) ) ) ); if ( ! current_user_can( 'view_site_health_checks' ) ) { wp_die( __( 'Sorry, you are not allowed to access site health information.' ), '', 403 ); } wp_enqueue_style( 'site-health' ); wp_enqueue_script( 'site-health' ); if ( ! class_exists( 'WP_Site_Health' ) ) { require_once ABSPATH . 'wp-admin/includes/class-wp-site-health.php'; } if ( 'update_https' === $action ) { check_admin_referer( 'wp_update_https' ); if ( ! current_user_can( 'update_https' ) ) { wp_die( __( 'Sorry, you are not allowed to update this site to HTTPS.' ), 403 ); } if ( ! wp_is_https_supported() ) { wp_die( __( 'It looks like HTTPS is not supported for your website at this point.' ) ); } $result = wp_update_urls_to_https(); wp_redirect( add_query_arg( 'https_updated', (int) $result, wp_get_referer() ) ); exit; } $health_check_site_status = WP_Site_Health::get_instance(); get_current_screen()->add_help_tab( array( 'id' => 'overview', 'title' => __( 'Overview' ), 'content' => '

' . __( 'This screen allows you to obtain a health diagnosis of your site, and displays an overall rating of the status of your installation.' ) . '

' . '

' . __( 'In the Status tab, you can see critical information about your WordPress configuration, along with anything else that requires your attention.' ) . '

' . '

' . __( 'In the Info tab, you will find all the details about the configuration of your WordPress site, server, and database. There is also an export feature that allows you to copy all of the information about your site to the clipboard, to help solve problems on your site when obtaining support.' ) . '

', ) ); get_current_screen()->set_help_sidebar( '

' . __( 'For more information:' ) . '

' . '

' . __( 'Documentation on Site Health tool' ) . '

' ); // Start by checking if this is a special request checking for the existence of certain filters. $health_check_site_status->check_wp_version_check_exists(); require_once ABSPATH . 'wp-admin/admin-header.php'; ?>

'success', 'id' => 'message', 'dismissible' => true, ) ); } else { wp_admin_notice( __( 'Site URLs could not be switched to HTTPS.' ), array( 'type' => 'error', 'id' => 'message', 'dismissible' => true, ) ); } } ?>

'error', 'additional_classes' => array( 'hide-if-js' ), ) ); ?>

add_help_tab( array( 'id' => 'overview', 'title' => __( 'Overview' ), 'content' => '

' . __( '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'; ?>
'error', 'additional_classes' => array( 'hide-if-js' ), ) ); ?>

$privacy_policy_page_id, 'action' => 'edit', ), admin_url( 'post.php' ) ); $view_href = get_permalink( $privacy_policy_page_id ); ?> Edit or view your Privacy Policy page content.' ), esc_url( $edit_href ), esc_url( $view_href ) ); } else { printf( /* translators: 1: URL to edit Privacy Policy page, 2: URL to preview Privacy Policy page. */ __( 'Edit or preview your Privacy Policy page content.' ), esc_url( $edit_href ), esc_url( $view_href ) ); } ?> Check out our privacy policy guide%3$s for recommendations on what content to include, along with policies suggested by your plugins and theme.' ), esc_url( admin_url( 'options-privacy.php?tab=policyguide' ) ), '', '' ); ?>


'page', 'posts_per_page' => 1, 'post_status' => array( 'publish', 'draft', ), ) ); ?>