';
printf(
/* translators: %s expands to robots.txt. */
esc_html__( 'If you had a %s file and it was editable, you could edit it from here.', 'wordpress-seo' ),
'robots.txt'
);
echo '
';
printf(
/* translators: %s expands to robots.txt. */
esc_html__( 'If your %s were writable, you could edit it from here.', 'wordpress-seo' ),
'robots.txt'
);
echo '
';
printf(
/* translators: %s expands to ".htaccess". */
esc_html__( 'If your %s were writable, you could edit it from here.', 'wordpress-seo' ),
'.htaccess'
);
echo '
';
echo ' ';
}
else {
echo '';
}
}
else {
echo '
';
printf(
/* translators: %s expands to ".htaccess". */
esc_html__( 'If you had a %s file and it was editable, you could edit it from here.', 'wordpress-seo' ),
'.htaccess'
);
echo '
hidden( 'show_onboarding_notice', 'wpseo_show_onboarding_notice' );
PK UE\^&Ɵ tabs/network/restore-site.phpnu W+A ' . esc_html__( 'Using this form you can reset a site to the default SEO settings.', 'wordpress-seo' ) . '';
if ( get_blog_count() <= 100 ) {
$network_admin = new Yoast_Network_Admin();
$yform->select(
'site_id',
__( 'Site ID', 'wordpress-seo' ),
$network_admin->get_site_choices( false, true )
);
}
else {
$yform->textinput( 'site_id', __( 'Site ID', 'wordpress-seo' ) );
}
wp_nonce_field( 'wpseo-network-restore', 'restore_site_nonce', false );
echo '';
PK UE\v{ tabs/network/crawl-settings.phpnu W+A get_all();
?>
';
printf(
/* translators: %1$s opens the link to the Yoast.com article about Crawl settings, %2$s closes the link, */
esc_html__( '%1$sLearn more about crawl settings.%2$s', 'wordpress-seo' ),
'',
''
);
echo '';
/**
* Fires when displaying the crawl cleanup network tab.
*
* @param Yoast_Form $yform The yoast form object.
*/
do_action( 'wpseo_settings_tab_crawl_cleanup_network', $yform );
?>
hidden( 'show_onboarding_notice', 'wpseo_show_onboarding_notice' );
PK UE\pm tabs/network/general.phpnu W+A ';
/*
* {@internal Important: Make sure the options added to the array here are in line with the
* options set in the WPSEO_Option_MS::$allowed_access_options property.}}
*/
$yform->select(
'access',
/* translators: %1$s expands to Yoast SEO */
sprintf( __( 'Who should have access to the %1$s settings', 'wordpress-seo' ), 'Yoast SEO' ),
[
'admin' => __( 'Site Admins (default)', 'wordpress-seo' ),
'superadmin' => __( 'Super Admins only', 'wordpress-seo' ),
]
);
if ( get_blog_count() <= 100 ) {
$network_admin = new Yoast_Network_Admin();
$yform->select(
'defaultblog',
__( 'New sites in the network inherit their SEO settings from this site', 'wordpress-seo' ),
$network_admin->get_site_choices( true, true )
);
echo '
' . esc_html__( 'Choose the site whose settings you want to use as default for all sites that are added to your network. If you choose \'None\', the normal plugin defaults will be used.', 'wordpress-seo' ) . '
';
}
else {
$yform->textinput( 'defaultblog', __( 'New sites in the network inherit their SEO settings from this site', 'wordpress-seo' ) );
echo '
';
printf(
/* translators: 1: link open tag; 2: link close tag. */
esc_html__( 'Enter the %1$sSite ID%2$s for the site whose settings you want to use as default for all sites that are added to your network. Leave empty for none (i.e. the normal plugin defaults will be used).', 'wordpress-seo' ),
'',
''
);
echo '
';
}
echo '
' . esc_html__( 'Take note:', 'wordpress-seo' ) . ' ' . esc_html__( 'Privacy sensitive (FB admins and such), theme specific (title rewrite) and a few very site specific settings will not be imported to new sites.', 'wordpress-seo' ) . '
PK UE\J[z z tabs/tool/wpseo-export.phpnu W+A export();
return;
}
$wpseo_export_phrase = sprintf(
/* translators: %1$s expands to Yoast SEO */
__( 'Export your %1$s settings here, to copy them on another site.', 'wordpress-seo' ),
'Yoast SEO'
);
?>
PK UE\mI'e e tabs/tool/import-seo.phpnu W+A detect();
if ( count( $import_check->needs_import ) === 0 ) {
echo '
', esc_html__( 'Import from other SEO plugins', 'wordpress-seo' ), '
';
echo '
';
printf(
/* translators: %s expands to Yoast SEO */
esc_html__( '%s did not detect any plugin data from plugins it can import from.', 'wordpress-seo' ),
'Yoast SEO'
);
echo '
';
return;
}
/**
* Creates a select box given a name and plugins array.
*
* @param string $name Name field for the select field.
* @param array $plugins An array of plugins and classes.
*
* @return void
*/
function wpseo_import_external_select( $name, $plugins ) {
esc_html_e( 'Plugin: ', 'wordpress-seo' );
echo '';
}
?>
',
''
);
?>
PK UE\= paper-collapsible.phpnu W+A
>
',
esc_attr( 'collapsible-header ' . $collapsible_header_class ),
// phpcs:ignore WordPress.Security.EscapeOutput -- $button_id_attr is escaped above.
$button_id_attr,
esc_attr( $collapsible_config['expanded'] ),
// phpcs:ignore WordPress.Security.EscapeOutput -- $help_text is an instance of WPSEO_Admin_Help_Panel, which escapes it's own output.
$help_text->get_button_html(),
esc_html( $title ) . wp_kses_post( $title_after ),
wp_kses_post( $collapsible_config['toggle_icon'] )
);
}
else {
echo '
',
esc_html( $title ),
wp_kses_post( $title_after ),
// phpcs:ignore WordPress.Security.EscapeOutput -- $help_text is an instance of WPSEO_Admin_Help_Panel, which escapes it's own output.
$help_text->get_button_html(),
'
PK UE\u:w tool-bulk-editor.phpnu W+A $yoast_free_input_fields,
'nonce' => wp_create_nonce( 'bulk-editor-table' ),
];
$wpseo_bulk_titles_table = new WPSEO_Bulk_Title_Editor_List_Table( $yoast_bulk_editor_arguments );
$wpseo_bulk_description_table = new WPSEO_Bulk_Description_List_Table( $yoast_bulk_editor_arguments );
$yoast_free_screen_reader_content = [
'heading_views' => __( 'Filter posts list', 'wordpress-seo' ),
'heading_pagination' => __( 'Posts list navigation', 'wordpress-seo' ),
'heading_list' => __( 'Posts list', 'wordpress-seo' ),
];
get_current_screen()->set_screen_reader_content( $yoast_free_screen_reader_content );
if ( ! empty( $_REQUEST['_wp_http_referer'] ) && isset( $_SERVER['REQUEST_URI'] ) ) {
$request_uri = sanitize_file_name( wp_unslash( $_SERVER['REQUEST_URI'] ) );
wp_redirect(
remove_query_arg(
[ '_wp_http_referer', '_wpnonce' ],
$request_uri
)
);
exit;
}
/**
* Renders a bulk editor tab.
*
* @param WPSEO_Bulk_List_Table $table The table to render.
* @param string $id The id for the tab.
*
* @return void
*/
function wpseo_get_rendered_tab( $table, $id ) {
?>
show_page();
?>
PK UE\X8 partial-notifications-errors.phpnu W+A toggles === null ) {
$this->toggles = $this->load_toggles();
}
return $this->toggles;
}
/**
* Loads the available feature toggles.
*
* Also ensures that the toggles are all Yoast_Feature_Toggle instances and sorted by their order value.
*
* @return array List of sorted Yoast_Feature_Toggle instances.
*/
protected function load_toggles() {
$xml_sitemap_extra = false;
if ( WPSEO_Options::get( 'enable_xml_sitemap' ) ) {
$xml_sitemap_extra = '' . esc_html__( 'See the XML sitemap.', 'wordpress-seo' ) . '';
}
$feature_toggles = [
(object) [
'name' => __( 'SEO analysis', 'wordpress-seo' ),
'setting' => 'keyword_analysis_active',
'label' => __( 'The SEO analysis offers suggestions to improve the SEO of your text.', 'wordpress-seo' ),
'read_more_label' => __( 'Learn how the SEO analysis can help you rank.', 'wordpress-seo' ),
'read_more_url' => 'https://yoa.st/2ak',
'order' => 10,
],
(object) [
'name' => __( 'Readability analysis', 'wordpress-seo' ),
'setting' => 'content_analysis_active',
'label' => __( 'The readability analysis offers suggestions to improve the structure and style of your text.', 'wordpress-seo' ),
'read_more_label' => __( 'Discover why readability is important for SEO.', 'wordpress-seo' ),
'read_more_url' => 'https://yoa.st/2ao',
'order' => 20,
],
(object) [
'name' => __( 'Inclusive language analysis', 'wordpress-seo' ),
'supported_languages' => Language_Helper::$languages_with_inclusive_language_support,
'setting' => 'inclusive_language_analysis_active',
'label' => __( 'The inclusive language analysis offers suggestions to write more inclusive copy.', 'wordpress-seo' ),
'read_more_label' => __( 'Discover why inclusive language is important for SEO.', 'wordpress-seo' ),
'read_more_url' => 'https://yoa.st/inclusive-language-features-free',
'order' => 25,
],
(object) [
'name' => __( 'Cornerstone content', 'wordpress-seo' ),
'setting' => 'enable_cornerstone_content',
'label' => __( 'The cornerstone content feature lets you to mark and filter cornerstone content on your website.', 'wordpress-seo' ),
'read_more_label' => __( 'Find out how cornerstone content can help you improve your site structure.', 'wordpress-seo' ),
'read_more_url' => 'https://yoa.st/dashboard-help-cornerstone',
'order' => 30,
],
(object) [
'name' => __( 'Text link counter', 'wordpress-seo' ),
'setting' => 'enable_text_link_counter',
'label' => __( 'The text link counter helps you improve your site structure.', 'wordpress-seo' ),
'read_more_label' => __( 'Find out how the text link counter can enhance your SEO.', 'wordpress-seo' ),
'read_more_url' => 'https://yoa.st/2aj',
'order' => 40,
],
(object) [
'name' => __( 'Insights', 'wordpress-seo' ),
'setting' => 'enable_metabox_insights',
'label' => __( 'Find relevant data about your content right in the Insights section in the Yoast SEO metabox. You’ll see what words you use most often and if they’re a match with your keywords! ', 'wordpress-seo' ),
'read_more_label' => __( 'Find out how Insights can help you improve your content.', 'wordpress-seo' ),
'read_more_url' => 'https://yoa.st/4ew',
'premium_url' => 'https://yoa.st/2ai',
'order' => 41,
],
(object) [
'name' => __( 'Link suggestions', 'wordpress-seo' ),
'premium' => true,
'setting' => 'enable_link_suggestions',
'label' => __( 'Get relevant internal linking suggestions — while you’re writing! The link suggestions metabox shows a list of posts on your blog with similar content that might be interesting to link to. ', 'wordpress-seo' ),
'read_more_label' => __( 'Read more about how internal linking can improve your site structure.', 'wordpress-seo' ),
'read_more_url' => 'https://yoa.st/4ev',
'premium_url' => 'https://yoa.st/17g',
'premium_upsell_url' => 'https://yoa.st/get-link-suggestions',
'order' => 42,
],
(object) [
'name' => __( 'XML sitemaps', 'wordpress-seo' ),
'setting' => 'enable_xml_sitemap',
/* translators: %s: Yoast SEO */
'label' => sprintf( __( 'Enable the XML sitemaps that %s generates.', 'wordpress-seo' ), 'Yoast SEO' ),
'read_more_label' => __( 'Read why XML Sitemaps are important for your site.', 'wordpress-seo' ),
'read_more_url' => 'https://yoa.st/2a-',
'extra' => $xml_sitemap_extra,
'after' => $this->sitemaps_toggle_after(),
'order' => 60,
],
(object) [
'name' => __( 'Admin bar menu', 'wordpress-seo' ),
'setting' => 'enable_admin_bar_menu',
/* translators: 1: Yoast SEO */
'label' => sprintf( __( 'The %1$s admin bar menu contains useful links to third-party tools for analyzing pages and makes it easy to see if you have new notifications.', 'wordpress-seo' ), 'Yoast SEO' ),
'order' => 80,
],
(object) [
'name' => __( 'Security: no advanced or schema settings for authors', 'wordpress-seo' ),
'setting' => 'disableadvanced_meta',
'label' => sprintf(
/* translators: 1: Yoast SEO, 2: translated version of "Off" */
__( 'The advanced section of the %1$s meta box allows a user to remove posts from the search results or change the canonical. The settings in the schema tab allows a user to change schema meta data for a post. These are things you might not want any author to do. That\'s why, by default, only editors and administrators can do this. Setting to "%2$s" allows all users to change these settings.', 'wordpress-seo' ),
'Yoast SEO',
__( 'Off', 'wordpress-seo' )
),
'order' => 90,
],
(object) [
'name' => __( 'Usage tracking', 'wordpress-seo' ),
'label' => __( 'Usage tracking', 'wordpress-seo' ),
'setting' => 'tracking',
'read_more_label' => sprintf(
/* translators: 1: Yoast SEO */
__( 'Allow us to track some data about your site to improve our plugin.', 'wordpress-seo' ),
'Yoast SEO'
),
'read_more_url' => 'https://yoa.st/usage-tracking-2',
'order' => 95,
],
(object) [
'name' => __( 'REST API: Head endpoint', 'wordpress-seo' ),
'setting' => 'enable_headless_rest_endpoints',
'label' => sprintf(
/* translators: 1: Yoast SEO */
__( 'This %1$s REST API endpoint gives you all the metadata you need for a specific URL. This will make it very easy for headless WordPress sites to use %1$s for all their SEO meta output.', 'wordpress-seo' ),
'Yoast SEO'
),
'order' => 100,
],
(object) [
'name' => __( 'Enhanced Slack sharing', 'wordpress-seo' ),
'setting' => 'enable_enhanced_slack_sharing',
'label' => __( 'This adds an author byline and reading time estimate to the article’s snippet when shared on Slack.', 'wordpress-seo' ),
'read_more_label' => __( 'Find out how a rich snippet can improve visibility and click-through-rate.', 'wordpress-seo' ),
'read_more_url' => 'https://yoa.st/help-slack-share',
'order' => 105,
],
(object) [
'name' => __( 'IndexNow', 'wordpress-seo' ),
'premium' => true,
'setting' => 'enable_index_now',
'label' => __( 'Automatically ping search engines like Bing and Yandex whenever you publish, update or delete a post.', 'wordpress-seo' ),
'read_more_label' => __( 'Find out how IndexNow can help your site.', 'wordpress-seo' ),
'read_more_url' => 'https://yoa.st/index-now-read-more',
'premium_url' => 'https://yoa.st/index-now-feature',
'premium_upsell_url' => 'https://yoa.st/get-indexnow',
'order' => 110,
],
(object) [
'name' => __( 'AI title & description generator', 'wordpress-seo' ),
'premium' => true,
'setting' => 'enable_ai_generator',
'label' => __( 'Use the power of Yoast AI to automatically generate compelling titles and descriptions for your posts and pages.', 'wordpress-seo' ),
'read_more_label' => __( 'Learn more', 'wordpress-seo' ),
'read_more_url' => 'https://yoa.st/ai-generator-read-more',
'premium_url' => 'https://yoa.st/ai-generator-feature',
'premium_upsell_url' => 'https://yoa.st/get-ai-generator',
'order' => 115,
],
];
/**
* Filter to add feature toggles from add-ons.
*
* @param array $feature_toggles Array with feature toggle objects where each object
* should have a `name`, `setting` and `label` property.
*/
$feature_toggles = apply_filters( 'wpseo_feature_toggles', $feature_toggles );
$feature_toggles = array_map( [ $this, 'ensure_toggle' ], $feature_toggles );
usort( $feature_toggles, [ $this, 'sort_toggles_callback' ] );
return $feature_toggles;
}
/**
* Returns html for a warning that core sitemaps are enabled when yoast seo sitemaps are disabled.
*
* @return string HTML string for the warning.
*/
protected function sitemaps_toggle_after() {
$out = '
';
$alert = new Alert_Presenter(
/* translators: %1$s: expands to an opening anchor tag, %2$s: expands to a closing anchor tag */
sprintf( esc_html__( 'Disabling Yoast SEO\'s XML sitemaps will not disable WordPress\' core sitemaps. In some cases, this %1$s may result in SEO errors on your site%2$s. These may be reported in Google Search Console and other tools.', 'wordpress-seo' ), '', '' ),
'warning'
);
$out .= $alert->present();
$out .= '
';
return $out;
}
/**
* Ensures that the passed value is a Yoast_Feature_Toggle.
*
* @param Yoast_Feature_Toggle|object|array $toggle_data Feature toggle instance, or raw object or array
* containing feature toggle data.
*
* @return Yoast_Feature_Toggle Feature toggle instance based on $toggle_data.
*/
protected function ensure_toggle( $toggle_data ) {
if ( $toggle_data instanceof Yoast_Feature_Toggle ) {
return $toggle_data;
}
if ( is_object( $toggle_data ) ) {
$toggle_data = get_object_vars( $toggle_data );
}
return new Yoast_Feature_Toggle( $toggle_data );
}
/**
* Callback for sorting feature toggles by their order.
*
* {@internal Once the minimum PHP version goes up to PHP 7.0, the logic in the function
* can be replaced with the spaceship operator `<=>`.}
*
* @param Yoast_Feature_Toggle $feature_a Feature A.
* @param Yoast_Feature_Toggle $feature_b Feature B.
*
* @return int An integer less than, equal to, or greater than zero indicating respectively
* that feature A is considered to be less than, equal to, or greater than feature B.
*/
protected function sort_toggles_callback( Yoast_Feature_Toggle $feature_a, Yoast_Feature_Toggle $feature_b ) {
return ( $feature_a->order - $feature_b->order );
}
}
PK UE\)gM M form/select.phpnu W+A
PK UE\)A A " partial-notifications-warnings.phpnu W+A $value ) {
if ( property_exists( $this, $key ) ) {
$this->$key = $value;
}
}
}
/**
* Magic isset-er.
*
* @param string $key Key to check whether a value for it is set.
*
* @return bool True if set, false otherwise.
*/
public function __isset( $key ) {
return isset( $this->$key );
}
/**
* Magic getter.
*
* @param string $key Key to get the value for.
*
* @return mixed Value for the key, or null if not set.
*/
public function __get( $key ) {
if ( isset( $this->$key ) ) {
return $this->$key;
}
return null;
}
/**
* Checks whether the feature for this toggle is enabled.
*
* @return bool True if the feature is enabled, false otherwise.
*/
public function is_enabled() {
return (bool) WPSEO_Options::get( $this->setting );
}
}
PK UE\EMLV V js-templates-primary-term.phpnu W+A
PK UE\;% interface-yoast-form-element.phpnu W+A } } licenses.phpnu W+A } } &* licenses.phpnu W+A PK +