*/ /* Copyright 2016 - 2024 - Benjamin Denis (email : contact@seopress.org) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /** * Setup Wizard Class. * * Takes new users through some basic steps to setup SiteSEO. * * @version 3.5.8 */ if ( ! defined('ABSPATH')) { exit; } /** * SITESEO_Admin_Setup_Wizard class. */ class SITESEO_Admin_Setup_Wizard { /** * Current step. * * @var string */ private $step = ''; /** * Parent step. * * @var string */ private $parent = ''; /** * Steps for the setup wizard. * * @var array */ private $steps = []; /** * Hook in tabs. */ public function __construct() { if (apply_filters('siteseo_enable_setup_wizard', true) && current_user_can(siteseo_capability('manage_options', 'Admin_Setup_Wizard'))) { add_action('admin_menu', [$this, 'admin_menus']); add_action('admin_init', [$this, 'setup_wizard']); //Remove notices remove_all_actions( 'admin_notices' ); remove_all_actions( 'all_admin_notices' ); //Disable Query Monitor add_filter('user_has_cap', 'siteseo_disable_qm', 10, 3); //Load our scripts and CSS add_action('admin_enqueue_scripts', [$this, 'enqueue_scripts']); } } /** * Add admin menus/screens. */ public function admin_menus() { add_dashboard_page('', '', siteseo_capability('manage_options', 'menu'), 'siteseo-setup', ''); } /** * Register/enqueue scripts and styles for the Setup Wizard. * * Hooked onto 'admin_enqueue_scripts'. */ public function enqueue_scripts() { $prefix = ''; wp_enqueue_style('siteseo-setup', SITESEO_ASSETS_DIR. '/css/setup' . $prefix . '.css', ['install'], SITESEO_VERSION); wp_register_script('siteseo-migrate-ajax', SITESEO_ASSETS_DIR . '/js/siteseo-migrate' . $prefix . '.js', ['jquery'], SITESEO_VERSION, true); wp_enqueue_media(); wp_register_script('siteseo-media-uploader', SITESEO_ASSETS_DIR . '/js/siteseo-media-uploader' . $prefix . '.js', ['jquery'], SITESEO_VERSION, true); $siteseo_migrate = [ 'siteseo_aio_migrate' => [ 'siteseo_nonce' => wp_create_nonce('siteseo_aio_migrate_nonce'), 'siteseo_aio_migration' => admin_url('admin-ajax.php'), ], 'siteseo_yoast_migrate' => [ 'siteseo_nonce' => wp_create_nonce('siteseo_yoast_migrate_nonce'), 'siteseo_yoast_migration' => admin_url('admin-ajax.php'), ], 'siteseo_seo_framework_migrate' => [ 'siteseo_nonce' => wp_create_nonce('siteseo_seo_framework_migrate_nonce'), 'siteseo_seo_framework_migration' => admin_url('admin-ajax.php'), ], 'siteseo_rk_migrate' => [ 'siteseo_nonce' => wp_create_nonce('siteseo_rk_migrate_nonce'), 'siteseo_rk_migration' => admin_url('admin-ajax.php'), ], 'siteseo_squirrly_migrate' => [ 'siteseo_nonce' => wp_create_nonce('siteseo_squirrly_migrate_nonce'), 'siteseo_squirrly_migration' => admin_url('admin-ajax.php'), ], 'siteseo_seo_ultimate_migrate' => [ 'siteseo_nonce' => wp_create_nonce('siteseo_seo_ultimate_migrate_nonce'), 'siteseo_seo_ultimate_migration' => admin_url('admin-ajax.php'), ], 'siteseo_wp_meta_seo_migrate' => [ 'siteseo_nonce' => wp_create_nonce('siteseo_meta_seo_migrate_nonce'), 'siteseo_wp_meta_seo_migration' => admin_url('admin-ajax.php'), ], 'siteseo_premium_seo_pack_migrate' => [ 'siteseo_nonce' => wp_create_nonce('siteseo_premium_seo_pack_migrate_nonce'), 'siteseo_premium_seo_pack_migration' => admin_url('admin-ajax.php'), ], 'siteseo_wpseo_migrate' => [ 'siteseo_nonce' => wp_create_nonce('siteseo_wpseo_migrate_nonce'), 'siteseo_wpseo_migration' => admin_url('admin-ajax.php'), ], 'siteseo_platinum_seo_migrate' => [ 'siteseo_nonce' => wp_create_nonce('siteseo_platinum_seo_migrate_nonce'), 'siteseo_platinum_seo_migration' => admin_url('admin-ajax.php'), ], 'siteseo_smart_crawl_migrate' => [ 'siteseo_nonce' => wp_create_nonce('siteseo_smart_crawl_migrate_nonce'), 'siteseo_smart_crawl_migration' => admin_url('admin-ajax.php'), ], 'siteseo_seopressor_migrate' => [ 'siteseo_nonce' => wp_create_nonce('siteseo_seopressor_migrate_nonce'), 'siteseo_seopressor_migration' => admin_url('admin-ajax.php'), ], 'siteseo_slim_seo_migrate' => [ 'siteseo_nonce' => wp_create_nonce('siteseo_slim_seo_migrate_nonce'), 'siteseo_slim_seo_migration' => admin_url('admin-ajax.php'), ], 'siteseo_metadata_csv' => [ 'siteseo_nonce' => wp_create_nonce('siteseo_export_csv_metadata_nonce'), 'siteseo_metadata_export' => admin_url('admin-ajax.php'), ], 'i18n' => [ 'migration' => esc_html__('Migration completed!', 'siteseo'), 'export' => esc_html__('Export completed!', 'siteseo'), ], ]; wp_localize_script('siteseo-migrate-ajax', 'siteseoAjaxMigrate', $siteseo_migrate); } /** * Show the setup wizard. */ public function setup_wizard() { if (empty($_GET['page']) || 'siteseo-setup' !== $_GET['page']) { return; } $seo_title = 'SiteSEO'; if (function_exists('siteseo_get_toggle_white_label_option') && '1' == siteseo_get_toggle_white_label_option()) { $seo_title = method_exists(siteseo_pro_get_service('OptionPro'), 'getWhiteLabelListTitle') && siteseo_pro_get_service('OptionPro')->getWhiteLabelListTitle() ? siteseo_pro_get_service('OptionPro')->getWhiteLabelListTitle() : 'SiteSEO'; } $default_steps = [ 'welcome' => [ 'breadcrumbs' => true, 'name' => esc_html__('Welcome', 'siteseo'), 'view' => [$this, 'siteseo_setup_welcome'], 'description' => __('Configure site\'s SEO', 'siteseo'), 'handler' => [$this, 'siteseo_setup_import_settings_save'], 'sub_steps' => [ 'welcome' => esc_html__('Welcome','siteseo'), 'import_settings' => esc_html__('Import metadata','siteseo') ], 'parent' => 'welcome' ], 'import_settings' => [ 'name' => esc_html__('Import SEO metadata', 'siteseo'), 'view' => [$this, 'siteseo_setup_import_settings'], 'description' => __('Import Metadata', 'siteseo'), 'handler' => [$this, 'siteseo_setup_import_settings_save'], 'sub_steps' => [ 'welcome' => esc_html__('Welcome','siteseo'), 'import_settings' => esc_html__('Import metadata','siteseo') ], 'parent' => 'welcome' ], 'site' => [ 'breadcrumbs' => true, 'name' => esc_html__('Your site', 'siteseo'), 'view' => [$this, 'siteseo_setup_site'], 'description' => __('Fill site and social data', 'siteseo'), 'handler' => [$this, 'siteseo_setup_site_save'], 'sub_steps' => [ 'site' => esc_html__('General','siteseo'), 'social_accounts' => esc_html__('Your social accounts','siteseo') ], 'parent' => 'site' ], 'social_accounts' => [ 'name' => esc_html__('Your site', 'siteseo'), 'view' => [$this, 'siteseo_setup_social_accounts'], 'description' => __('Fill site and social data', 'siteseo'), 'handler' => [$this, 'siteseo_setup_social_accounts_save'], 'sub_steps' => [ 'site' => esc_html__('General','siteseo'), 'social_accounts' => esc_html__('Your social accounts','siteseo') ], 'parent' => 'site' ], 'indexing_post_types' => [ 'breadcrumbs' => true, 'name' => esc_html__('Indexing', 'siteseo'), 'view' => [$this, 'siteseo_setup_indexing_post_types'], 'description' => __('Select post type indexing', 'siteseo'), 'handler' => [$this, 'siteseo_setup_indexing_post_types_save'], 'sub_steps' => [ 'indexing_post_types' => esc_html__('Post Types','siteseo'), 'indexing_archives' => esc_html__('Archives','siteseo'), 'indexing_taxonomies' => esc_html__('Taxonomies','siteseo') ], 'parent' => 'indexing_post_types' ], 'indexing_archives' => [ 'name' => esc_html__('Indexing', 'siteseo'), 'view' => [$this, 'siteseo_setup_indexing_archives'], 'description' => __('Select post type indexing', 'siteseo'), 'handler' => [$this, 'siteseo_setup_indexing_archives_save'], 'sub_steps' => [ 'indexing_post_types' => esc_html__('Post Types','siteseo'), 'indexing_archives' => esc_html__('Archives','siteseo'), 'indexing_taxonomies' => esc_html__('Taxonomies','siteseo') ], 'parent' => 'indexing_post_types' ], 'indexing_taxonomies' => [ 'name' => esc_html__('Indexing', 'siteseo'), 'view' => [$this, 'siteseo_setup_indexing_taxonomies'], 'description' => __('Select post type indexing', 'siteseo'), 'handler' => [$this, 'siteseo_setup_indexing_taxonomies_save'], 'sub_steps' => [ 'indexing_post_types' => esc_html__('Post Types','siteseo'), 'indexing_archives' => esc_html__('Archives','siteseo'), 'indexing_taxonomies' => esc_html__('Taxonomies','siteseo') ], 'parent' => 'indexing_post_types' ], 'advanced' => [ 'breadcrumbs' => true, 'name' => esc_html__('Advanced options', 'siteseo'), 'view' => [$this, 'siteseo_setup_advanced'], 'description' => __('URL configurations', 'siteseo'), 'handler' => [$this, 'siteseo_setup_advanced_save'], 'sub_steps' => [ 'advanced' => esc_html__('Advanced','siteseo'), 'universal' => esc_html__('Universal SEO metabox','siteseo'), ], 'parent' => 'advanced' ], 'universal' => [ 'name' => esc_html__('Advanced options', 'siteseo'), 'view' => [$this, 'siteseo_setup_universal'], 'description' => __('Enable Univeral SiteSEO', 'siteseo'), 'handler' => [$this, 'siteseo_setup_universal_save'], 'sub_steps' => [ 'advanced' => esc_html__('Advanced','siteseo'), 'universal' => esc_html__('Universal SEO metabox','siteseo'), ], 'parent' => 'advanced' ], ]; if (function_exists('siteseo_get_toggle_white_label_option') && '1' === siteseo_get_toggle_white_label_option()) { //do nothing } /*elseif ((! is_multisite()) || ! is_plugin_active('siteseo-pro/siteseo-pro.php')){ $sub_steps = [ 'pro' => esc_html__('PRO','siteseo'), ]; if (is_plugin_active('siteseo-pro/siteseo-pro.php')) { unset($sub_steps['pro']); } if ( ! is_plugin_active('siteseo-pro/siteseo-pro.php')) { $default_steps['pro'] = [ 'name' => sprintf(__('Extend %s', 'siteseo'), $seo_title), 'view' => [$this, 'siteseo_setup_pro'], 'description' => __('Upgrade to Pro!', 'siteseo'), 'handler' => '', 'sub_steps' => $sub_steps, 'parent' => 'pro' ]; } if (!is_plugin_active('siteseo-pro/siteseo-pro.php')) { $default_steps['pro']['breadcrumbs'] = true; } }*/ $default_steps['ready'] = [ 'breadcrumbs' => true, 'name' => esc_html__('Ready!', 'siteseo'), 'view' => [$this, 'siteseo_setup_ready'], 'description' => __('Its all set now', 'siteseo'), 'handler' => '', 'sub_steps' => [ 'ready' => esc_html__('Ready!', 'siteseo') ] ]; $this->steps = apply_filters('siteseo_setup_wizard_steps', $default_steps); $this->step = isset($_GET['step']) ? sanitize_key($_GET['step']) : current(array_keys($this->steps)); $this->parent = isset($_GET['parent']) ? sanitize_key($_GET['parent']) : current(array_keys($this->steps)); if ( !empty($_POST['save_step']) && isset($this->steps[$this->step]['handler'])) { call_user_func($this->steps[$this->step]['handler'], $this); } ob_start(); $this->setup_wizard_header(); $this->setup_wizard_steps(); $this->setup_wizard_content(); $this->setup_wizard_footer(); exit; } /** * Get the URL for the next step's screen. * * @param string $step slug (default: current step) * * @return string URL for next step if a next step exists. * Admin URL if it's the last step. * Empty string on failure. * * @since 3.5.8 */ public function get_next_step_link($step = '') { if ( ! $step) { $step = $this->step; } $keys = array_keys($this->steps); if (end($keys) === $step) { return admin_url(); } $step_index = array_search($step, $keys, true); if (false === $step_index) { return ''; } $parent = ''; $all = $this->steps; if (isset($all[$step]['parent'])) { $key = $keys[$step_index + 1]; if (isset($all[$key]['parent'])) { $parent = $all[$key]['parent']; } } return add_query_arg( [ 'step' => $keys[$step_index + 1], 'parent' => $parent, ], remove_query_arg( 'parent' ) ); } /** * Setup Wizard Header. */ public function setup_wizard_header() { set_current_screen(); $seo_title = 'SiteSEO'; if (function_exists('siteseo_get_toggle_white_label_option') && '1' == siteseo_get_toggle_white_label_option()) { $seo_title = method_exists(siteseo_pro_get_service('OptionPro'), 'getWhiteLabelListTitle') && siteseo_pro_get_service('OptionPro')->getWhiteLabelListTitle() ? siteseo_pro_get_service('OptionPro')->getWhiteLabelListTitle() : 'SiteSEO'; } ?> > <?php printf(esc_html__('%s › Setup Wizard', 'siteseo'), esc_html($seo_title)); ?> steps; $parent = $this->parent; ?>
    $step) { if (!isset($step['breadcrumbs'])) { continue; } $is_completed = array_search($this->step, array_keys($this->steps), true) > array_search($step_key, array_keys($this->steps), true); if ($step_key === $this->step || $step_key === $this->parent) { ?>
steps; $current_step = $this->step; $parent = $this->parent; ?>
steps[$this->step]['view'])) { call_user_func($this->steps[$this->step]['view'], $this); } } /** * Init "Step 1.1: Welcome". */ public function siteseo_setup_welcome() { $seo_title = 'SiteSEO'; if (function_exists('siteseo_get_toggle_white_label_option') && '1' == siteseo_get_toggle_white_label_option()) { $seo_title = method_exists(siteseo_pro_get_service('OptionPro'), 'getWhiteLabelListTitle') && siteseo_pro_get_service('OptionPro')->getWhiteLabelListTitle() ? siteseo_pro_get_service('OptionPro')->getWhiteLabelListTitle() : 'SiteSEO'; } ?>


setup_wizard_sub_steps(); ?>

getWhiteLabelListTitle() ? siteseo_pro_get_service('OptionPro')->getWhiteLabelListTitle() : 'SiteSEO'; } ?>


setup_wizard_sub_steps(); ?>

'Yoast SEO', 'aio' => 'All In One SEO', 'seo-framework' => 'The SEO Framework', 'rk' => 'Rank Math', 'squirrly' => 'Squirrly SEO', 'seo-ultimate' => 'SEO Ultimate', 'wp-meta-seo' => 'WP Meta SEO', 'premium-seo-pack' => 'Premium SEO Pack', 'wpseo' => 'wpSEO', 'platinum-seo' => 'Platinum SEO Pack', 'smart-crawl' => 'SmartCrawl', 'seopressor' => 'SeoPressor', 'slim-seo' => 'Slim SEO', ]; echo '

' . esc_html__('You don\'t have to enable the selected SEO plugin to run the import.', 'siteseo') . '

'; foreach ($plugins as $plugin => $name) { echo wp_kses_post(siteseo_migration_tool($plugin, $name)); } ?>

get_next_step_link())); exit; } /** * Init "Step 2.0: Your site - General". */ public function siteseo_setup_site() { $docs = siteseo_get_docs_links(); $siteseo_titles_option = get_option('siteseo_titles_option_name'); $siteseo_social_option = get_option('siteseo_social_option_name'); $current_user = wp_get_current_user(); $current_user_email = isset($current_user->user_email) ? $current_user->user_email : null; $site_sep = isset($siteseo_titles_option['titles_sep']) ? $siteseo_titles_option['titles_sep'] : null; $site_title = isset($siteseo_titles_option['titles_home_site_title']) ? $siteseo_titles_option['titles_home_site_title'] : null; $alt_site_title = isset($siteseo_titles_option['titles_home_site_title_alt']) ? $siteseo_titles_option['titles_home_site_title_alt'] : null; $knowledge_type = isset($siteseo_social_option['social_knowledge_type']) ? $siteseo_social_option['social_knowledge_type'] : null; $knowledge_name = isset($siteseo_social_option['social_knowledge_name']) ? $siteseo_social_option['social_knowledge_name'] : null; $knowledge_img = isset($siteseo_social_option['social_knowledge_img']) ? $siteseo_social_option['social_knowledge_img'] : null; $knowledge_email = isset($siteseo_social_option['siteseo_social_knowledge_email']) ? $siteseo_social_option['siteseo_social_knowledge_email'] : $current_user_email; $knowledge_nl = isset($siteseo_social_option['siteseo_social_knowledge_nl']); ?>


setup_wizard_sub_steps(); ?>

%%sep%% in your title and meta description templates.', 'siteseo')); ?>

%%sitetitle%% in your title and meta description templates.', 'siteseo')); ?>

content guidelines.', 'siteseo')), esc_url($docs['titles']['alt_title'])); ?>

'; echo ' '; echo ' '; echo ''; echo ''; ?>

"Organization" (for companies, associations, organizations), or "Personal" for a personal site, to help Google better understand your type of website and generate a Knowledge Graph panel.', 'siteseo')); ?>

$siteseo_social_option['siteseo_social_knowledge_email'], 'lang' => siteseo_get_locale()]; $response = wp_remote_post( $endpoint_url, array( 'method' => 'POST', 'body' => $body, 'timeout' => 5, 'blocking' => true ) ); } } wp_safe_redirect(esc_url_raw($this->get_next_step_link())); exit; } /** * Init "Step 2.1: Your site - Social accounts". */ public function siteseo_setup_social_accounts() { $siteseo_social_option = get_option('siteseo_social_option_name'); $knowledge_fb = isset($siteseo_social_option['social_accounts_facebook']) ? $siteseo_social_option['social_accounts_facebook'] : null; $knowledge_tw = isset($siteseo_social_option['social_accounts_twitter']) ? $siteseo_social_option['social_accounts_twitter'] : null; $knowledge_pin = isset($siteseo_social_option['social_accounts_pinterest']) ? $siteseo_social_option['social_accounts_pinterest'] : null; $knowledge_insta = isset($siteseo_social_option['social_accounts_instagram']) ? $siteseo_social_option['social_accounts_instagram'] : null; $knowledge_yt = isset($siteseo_social_option['social_accounts_youtube']) ? $siteseo_social_option['social_accounts_youtube'] : null; $knowledge_li = isset($siteseo_social_option['social_accounts_linkedin']) ? $siteseo_social_option['social_accounts_linkedin'] : null; ?>


setup_wizard_sub_steps(); ?>

get_next_step_link())); exit; } /** * Init "Step 3.0: Indexing Post Types Step". */ public function siteseo_setup_indexing_post_types() { $siteseo_titles_option = get_option('siteseo_titles_option_name'); ?>


setup_wizard_sub_steps(); ?>
getPostTypes(); if ( ! empty($postTypes)) { ?>

Post and Page are the default post types.','siteseo')); ?>

custom post types.','siteseo')); ?>

    $siteseo_cpt_value) { $titles_single_titles = isset($siteseo_titles_option['titles_single_titles'][$siteseo_cpt_key]['noindex']); ?>

    labels->name); ?> [name); ?>]

getPostTypes(); //Post Types noindex foreach ($postTypes as $siteseo_cpt_key => $siteseo_cpt_value) { if (isset($_POST['siteseo_titles_option_name']['titles_single_titles'][$siteseo_cpt_key]['noindex'])) { $noindex = sanitize_text_field(wp_unslash($_POST['siteseo_titles_option_name']['titles_single_titles'][$siteseo_cpt_key]['noindex'])); } else { $noindex = null; } $siteseo_titles_option['titles_single_titles'][$siteseo_cpt_key]['noindex'] = $noindex; } //Save options update_option('siteseo_titles_option_name', $siteseo_titles_option); wp_safe_redirect(esc_url_raw($this->get_next_step_link())); exit; } /** * Init "Step 3.1: Indexing Archives Step". */ public function siteseo_setup_indexing_archives() { $siteseo_titles_option = get_option('siteseo_titles_option_name'); ?>


setup_wizard_sub_steps(); ?>
getPostTypes(); if ( ! empty($postTypes)) { $cpt = $postTypes; unset($cpt['post']); unset($cpt['page']); ?>

Archive pages are automatically generated by WordPress. They group specific content such as your latest articles, a product category or your content by author or date.', 'siteseo')); ?>

post type archives:', 'siteseo')); ?>

    $siteseo_cpt_value) { $titles_archive_titles = isset($siteseo_titles_option['titles_archive_titles'][$siteseo_cpt_key]['noindex']); ?>

    labels->name); ?> [name); ?>]

getPostTypes(); //Post Type archives noindex foreach ($postTypes as $siteseo_cpt_key => $siteseo_cpt_value) { if (isset($_POST['siteseo_titles_option_name']['titles_archive_titles'][$siteseo_cpt_key]['noindex'])) { $noindex = sanitize_text_field(wp_unslash($_POST['siteseo_titles_option_name']['titles_archive_titles'][$siteseo_cpt_key]['noindex'])); } else { $noindex = null; } $siteseo_titles_option['titles_archive_titles'][$siteseo_cpt_key]['noindex'] = $noindex; } //Save options update_option('siteseo_titles_option_name', $siteseo_titles_option); wp_safe_redirect(esc_url_raw($this->get_next_step_link())); exit; } /** * Init "Step 3.2: Indexing Taxonomies Step". */ public function siteseo_setup_indexing_taxonomies() { $siteseo_titles_option = get_option('siteseo_titles_option_name', []); ?>


setup_wizard_sub_steps(); ?>
getTaxonomies(); if ( ! empty($taxonomies)) { ?>

Taxonomies are the method of classifying content and data in WordPress. When you use a taxonomy you\'re grouping similar things together. The taxonomy refers to the sum of those groups.','siteseo')); ?>

Categories and Tags are the default taxonomies. You can add your own taxonomies like "product categories": these are called custom taxonomies.','siteseo')); ?>

    $siteseo_tax_value) { $titles_tax_titles = isset($siteseo_titles_option['titles_tax_titles'][$siteseo_tax_key]['noindex']); ?>

    labels->name); ?> [name); ?>]

getTaxonomies() as $siteseo_tax_key => $siteseo_tax_value) { if (isset($_POST['siteseo_titles_option_name']['titles_tax_titles'][$siteseo_tax_key]['noindex'])) { $noindex = sanitize_text_field(wp_unslash($_POST['siteseo_titles_option_name']['titles_tax_titles'][$siteseo_tax_key]['noindex'])); } else { $noindex = null; } $siteseo_titles_option['titles_tax_titlestitles_tax_titles'][$siteseo_tax_key]['noindex'] = $noindex; } //Save options update_option('siteseo_titles_option_name', $siteseo_titles_option); wp_safe_redirect(esc_url_raw($this->get_next_step_link())); exit; } /** * Init "Step 4: Advanced Step". */ public function siteseo_setup_advanced() { $siteseo_titles_option = get_option('siteseo_titles_option_name'); $author_noindex = isset($siteseo_titles_option['titles_archives_author_noindex']); $siteseo_advanced_option = get_option('siteseo_advanced_option_name'); $attachments_file = isset($siteseo_advanced_option['advanced_attachments_file']); $category_url = isset($siteseo_advanced_option['advanced_category_url']); $product_category_url = isset($siteseo_advanced_option['advanced_product_cat_url']); ?>


setup_wizard_sub_steps(); ?>

get_next_step_link())); exit; } /** * Init "Step 4.2: Advanced Step". */ public function siteseo_setup_universal() { $siteseo_advanced_option = get_option('siteseo_advanced_option_name'); $universal_seo_metabox = isset($siteseo_advanced_option['appearance_universal_metabox_disable']) ? esc_attr($siteseo_advanced_option['appearance_universal_metabox_disable']) : null; ?>


setup_wizard_sub_steps(); ?>

get_next_step_link())); exit; } /** * Init "Step 5.0: PRO Step". */ public function siteseo_setup_pro() { $docs = siteseo_get_docs_links(); ?>


setup_wizard_sub_steps(); ?>

local search results.', 'siteseo')); ?>

WooCommerce or Easy Digital Downloads.', 'siteseo')); ?>

Google structured data (schema) to your content to improve its visibility in search results.', 'siteseo')); ?>

robots.txt and .htaccess files.', 'siteseo')); ?>

Google Analytics stats directly from your WordPress Dashboard.', 'siteseo')); ?>


setup_wizard_sub_steps(); ?>
  • user_email ? esc_html( $current_user->user_email ) : ''; ?>