????
Current Path : /home/innovagencyco/www/abtest.innovagency.co.za/wp-content/plugins/siteseo/main/ |
Current File : /home/innovagencyco/www/abtest.innovagency.co.za/wp-content/plugins/siteseo/main/options.php |
<?php /* * SiteSEO * https://siteseo.io/ * (c) SiteSEO Team <support@siteseo.io> */ /* 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 */ ////////////////////////////////////////////////////////////// //=========================================================== // SITESEO Core //=========================================================== // SiteSEO // Inspired by the DESIRE to be the BEST OF ALL // ---------------------------------------------------------- // Started by: Pulkit Gupta // Date: 23rd Jan 2020 // Time: 23:00 hrs // Site: http://siteseo.io.com/ (SiteSEO) // ---------------------------------------------------------- // Please Read the Terms of use at http://siteseo.io/tos // ---------------------------------------------------------- //=========================================================== // (c)SiteSEO Team //=========================================================== ////////////////////////////////////////////////////////////// /* 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 */ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly // Are we being accessed directly ? if(!defined('SITESEO_VERSION')) { exit('Hacking Attempt !'); } // Instant Indexing if('1' == siteseo_get_toggle_option('instant-indexing')){ require_once dirname(__FILE__) . '/options-instant-indexing.php'; } // Import / Export tool add_action('init', 'siteseo_enable', 999); function siteseo_enable(){ if (is_admin()) { require_once dirname(__FILE__) . '/options-import-export.php'; //Import Export } } // Front END if('1' == siteseo_get_toggle_option('titles')){ function siteseo_titles_disable_archives(){ global $wp_query; $service = siteseo_get_service('TitleOption'); if('1' == $service->getArchiveAuthorDisable() && $wp_query->is_author && ! is_feed()){ wp_safe_redirect(get_home_url(), '301'); exit; } if('1' == $service->getArchiveDateDisable() && $wp_query->is_date && ! is_feed()){ wp_safe_redirect(get_home_url(), '301'); exit; } return false; } // SEO metaboxes add_action('after_setup_theme', 'siteseo_hide_metaboxes'); function siteseo_hide_metaboxes(){ global $typenow, $pagenow; if(!is_admin()){ return; } // Post type? if ('post-new.php' == $pagenow || 'post.php' == $pagenow){ function siteseo_titles_single_enable_option(){ global $post; $siteseo_get_current_cpt = get_post_type($post); $options = get_option('siteseo_titles_option_name'); if(! empty($options)){ if (isset($options['titles_single_titles'][$siteseo_get_current_cpt]['enable'])) { return $options['titles_single_titles'][$siteseo_get_current_cpt]['enable']; } } } function siteseo_titles_single_enable_metabox($siteseo_get_post_types){ global $post; if (1 == siteseo_titles_single_enable_option() && '' != get_post_type($post)) { unset($siteseo_get_post_types[get_post_type($post)]); } return $siteseo_get_post_types; } add_filter('siteseo_metaboxe_seo', 'siteseo_titles_single_enable_metabox'); add_filter('siteseo_metaboxe_content_analysis', 'siteseo_titles_single_enable_metabox'); add_filter('siteseo_pro_metaboxe_sdt', 'siteseo_titles_single_enable_metabox'); } // Taxonomy? if('term.php' == $pagenow || 'edit-tags.php' == $pagenow){ if(! empty($_GET['taxonomy'])){ function siteseo_tax_single_enable_option($siteseo_get_current_tax){ $options = get_option('siteseo_titles_option_name'); if(! empty($options)){ if (isset($options['titles_tax_titles'][$siteseo_get_current_tax]['enable'])) { return $options['titles_tax_titles'][$siteseo_get_current_tax]['enable']; } } } function siteseo_tax_single_enable_metabox($siteseo_get_taxonomies){ $siteseo_get_current_tax = esc_attr(siteseo_opt_get('taxonomy')); if (1 == siteseo_tax_single_enable_option($siteseo_get_current_tax) && '' != $siteseo_get_current_tax) { unset($siteseo_get_taxonomies[$siteseo_get_current_tax]); } return $siteseo_get_taxonomies; } add_filter('siteseo_metaboxe_term_seo', 'siteseo_tax_single_enable_metabox'); } } } // Titles and metas add_action('template_redirect', 'siteseo_titles_disable_archives', 0); add_action('wp_head', 'siteseo_load_titles_options', 0); function siteseo_load_titles_options(){ if(is_admin()){ return; } if ((function_exists('is_wpforo_page') && is_wpforo_page()) || (class_exists('Ecwid_Store_Page') && Ecwid_Store_Page::is_store_page())) { //disable on wpForo pages to avoid conflicts //do nothing } else { require_once dirname(__FILE__) . '/options-titles-metas.php'; //Titles & metas } } } if('1' == siteseo_get_toggle_option('social')){ add_action('init', 'siteseo_load_oembed_options'); function siteseo_load_oembed_options(){ if(is_admin()){ return; } require_once dirname(__FILE__) . '/options-oembed.php'; //Oembed } add_action('wp_head', 'siteseo_load_social_options', 0); function siteseo_load_social_options(){ if(is_admin()){ return; } //disable on wpForo, LifterLMS private area, Ecwid store pages to avoid conflicts if((function_exists('is_llms_private_area') && is_llms_private_area()) || (function_exists('is_wpforo_page') && is_wpforo_page()) || (class_exists('Ecwid_Store_Page') && Ecwid_Store_Page::is_store_page())) { //do nothing } else { require_once dirname(__FILE__) . '/options-social.php'; //Social } } } if ('1' == siteseo_get_toggle_option('google-analytics')){ // User Consent JS function siteseo_google_analytics_cookies_js(){ $prefix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min'; wp_register_script('siteseo-cookies', SITESEO_ASSETS_DIR . '/js/siteseo-cookies' . $prefix . '.js', [], SITESEO_VERSION, true); wp_enqueue_script('siteseo-cookies'); wp_enqueue_script('siteseo-cookies-ajax', SITESEO_ASSETS_DIR . '/js/siteseo-cookies-ajax' . $prefix . '.js', ['jquery', 'siteseo-cookies'], SITESEO_VERSION, true); $days = 30; if(siteseo_get_service('GoogleAnalyticsOption')->getCbExpDate()){ $days = siteseo_get_service('GoogleAnalyticsOption')->getCbExpDate(); } $days = apply_filters('siteseo_cookies_expiration_days', $days); $siteseo_cookies_user_consent = [ 'siteseo_nonce' => wp_create_nonce('siteseo_cookies_user_consent_nonce'), 'siteseo_cookies_user_consent' => admin_url('admin-ajax.php'), 'siteseo_cookies_expiration_days' => $days, ]; wp_localize_script('siteseo-cookies-ajax', 'siteseoAjaxGAUserConsent', $siteseo_cookies_user_consent); } // Triggers WooCommerce JS function siteseo_google_analytics_ecommerce_js(){ $prefix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min'; wp_enqueue_script('siteseo-analytics', plugins_url('assets/js/siteseo-analytics' . $prefix . '.js', dirname(dirname(__FILE__))), [], SITESEO_VERSION, true); $siteseo_analytics = [ 'siteseo_nonce' => wp_create_nonce('siteseo_analytics_nonce'), 'siteseo_analytics' => admin_url('admin-ajax.php'), ]; wp_localize_script('siteseo-analytics', 'siteseoAjaxAnalytics', $siteseo_analytics); } // Ecommerce function siteseo_after_update_cart(){ check_ajax_referer('siteseo_analytics_nonce'); // Extract cart global $woocommerce; $items_purchased = []; $final = []; foreach($woocommerce->cart->get_cart() as $key => $item){ $product = wc_get_product($item['product_id']); // Get current product if($product){ // Set data $items_purchased['id'] = esc_js($product->get_id()); $items_purchased['name'] = esc_js($product->get_title()); $items_purchased['quantity'] = (float) esc_js($item['quantity']); $items_purchased['price'] = (float) esc_js($product->get_price()); // Extract categories $categories = get_the_terms($product->get_id(), 'product_cat'); if ($categories) { foreach ($categories as $category) { $categories_out[] = $category->name; } $categories_js = esc_js(implode('/', $categories_out)); $items_purchased['category'] = esc_js($categories_js); } } $final[] = $items_purchased; } $html = "<script>gtag('event', 'add_to_cart', {'items': " . wp_json_encode($final) . ' });</script>'; $html = apply_filters('siteseo_gtag_ec_add_to_cart_checkout_ev', $html); wp_send_json_success($html); } add_action('wp_ajax_siteseo_after_update_cart', 'siteseo_after_update_cart'); add_action('wp_ajax_nopriv_siteseo_after_update_cart', 'siteseo_after_update_cart'); if('1' == siteseo_get_service('GoogleAnalyticsOption')->getDisable()){ if(is_user_logged_in()){ global $wp_roles; //Get current user role if(isset(wp_get_current_user()->roles[0])){ $siteseo_user_role = wp_get_current_user()->roles[0]; //If current user role matchs values from SiteSEO GA settings then apply if('' != siteseo_get_service('GoogleAnalyticsOption')->getRoles()){ if (array_key_exists($siteseo_user_role, siteseo_get_service('GoogleAnalyticsOption')->getRoles())) { //do nothing } else { add_action('wp_enqueue_scripts', 'siteseo_google_analytics_cookies_js', 20, 1); } } else { add_action('wp_enqueue_scripts', 'siteseo_google_analytics_cookies_js', 20, 1); } } else { add_action('wp_enqueue_scripts', 'siteseo_google_analytics_cookies_js', 20, 1); } } else { add_action('wp_enqueue_scripts', 'siteseo_google_analytics_cookies_js', 20, 1); } } add_action('wp_head', 'siteseo_load_google_analytics_options', 0); function siteseo_load_google_analytics_options(){ require_once dirname(__FILE__) . '/options-google-analytics.php'; //Google Analytics + Matomo } function siteseo_cookies_user_consent(){ //siteseo_check_ajax_referer( 'siteseo_cookies_user_consent_nonce'); if ('1' == siteseo_get_service('GoogleAnalyticsOption')->getHalfDisable()) {//no user consent required wp_send_json_success(); } else { if (is_user_logged_in()) { global $wp_roles; //Get current user role if (isset(wp_get_current_user()->roles[0])) { $siteseo_user_role = wp_get_current_user()->roles[0]; //If current user role matchs values from SiteSEO GA settings then apply if('' != siteseo_get_service('GoogleAnalyticsOption')->getRoles()) { if(array_key_exists($siteseo_user_role, siteseo_get_service('GoogleAnalyticsOption')->getRoles())){ //do nothing } else { include_once dirname(__FILE__) . '/options-google-analytics.php'; //Google Analytics $data = []; $data['gtag_js'] = siteseo_google_analytics_js(false); $data['matomo_js'] = siteseo_matomo_js(false); $data['clarity_js'] = siteseo_clarity_js(false); $data['body_js'] = siteseo_google_analytics_body_code(false); $data['head_js'] = siteseo_google_analytics_head_code(false); $data['footer_js'] = siteseo_google_analytics_footer_code(false); $data['custom'] = ''; $data['custom'] = apply_filters('siteseo_custom_tracking', $data['custom']); wp_send_json_success($data); } } else { include_once dirname(__FILE__) . '/options-google-analytics.php'; //Google Analytics $data = []; $data['gtag_js'] = siteseo_google_analytics_js(false); $data['matomo_js'] = siteseo_matomo_js(false); $data['clarity_js'] = siteseo_clarity_js(false); $data['body_js'] = siteseo_google_analytics_body_code(false); $data['head_js'] = siteseo_google_analytics_head_code(false); $data['footer_js'] = siteseo_google_analytics_footer_code(false); $data['custom'] = ''; $data['custom'] = apply_filters('siteseo_custom_tracking', $data['custom']); wp_send_json_success($data); } } } else { include_once dirname(__FILE__) . '/options-google-analytics.php'; //Google Analytics $data = []; $data['gtag_js'] = siteseo_google_analytics_js(false); $data['matomo_js'] = siteseo_matomo_js(false); $data['clarity_js'] = siteseo_clarity_js(false); $data['body_js'] = siteseo_google_analytics_body_code(false); $data['head_js'] = siteseo_google_analytics_head_code(false); $data['footer_js'] = siteseo_google_analytics_footer_code(false); $data['custom'] = ''; $data['custom'] = apply_filters('siteseo_custom_tracking', $data['custom']); wp_send_json_success($data); } } } add_action('wp_ajax_siteseo_cookies_user_consent', 'siteseo_cookies_user_consent'); add_action('wp_ajax_nopriv_siteseo_cookies_user_consent', 'siteseo_cookies_user_consent'); } add_action('wp', 'siteseo_load_redirections_options', 0); function siteseo_load_redirections_options(){ if (function_exists('is_plugin_active') && is_plugin_active('thrive-visual-editor/thrive-visual-editor.php') && is_admin()) { return; } if(! is_admin()){ require_once dirname(__FILE__) . '/options-redirections.php'; //Redirections } } if('1' == siteseo_get_toggle_option('xml-sitemap')){ add_action('init', 'siteseo_load_sitemap', 999); function siteseo_load_sitemap(){ require_once dirname(__FILE__) . '/options-sitemap.php'; //XML / HTML Sitemap } } if('1' === siteseo_get_toggle_option('advanced')){ function siteseo_advanced_get_option($index){ $options = get_option('siteseo_advanced_option_name'); if(!empty($options) && isset($options[$index])) { return $options[$index]; } } require_once dirname(__FILE__) . '/options-breadcrumbs.php'; //Breadcrumbs if(!empty(siteseo_advanced_get_option('breadcrumbs_enable'))){ add_shortcode('siteseo_breadcrumbs', 'siteseo_render_breadcrumbs'); } if(!empty(siteseo_advanced_get_option('toc_enable'))){ require_once dirname(__FILE__). '/tableofcontent.php'; add_shortcode('siteseo_toc', 'siteseo_render_toc'); add_filter('the_content', 'siteseo_add_ids_to_headings'); } //Remove comment author url if ('1' == siteseo_advanced_get_option('advanced_comments_author_url')) { add_filter('get_comment_author_url', '__return_empty_string'); } //Remove website field in comments if('1' == siteseo_advanced_get_option('advanced_comments_website')){ function siteseo_advanced_advanced_comments_website_hook($fields){ unset($fields['url']); return $fields; } add_filter('comment_form_default_fields', 'siteseo_advanced_advanced_comments_website_hook', 40); } add_action('init', 'siteseo_load_advanced_options', 0); function siteseo_load_advanced_options(){ if (! is_admin()) { // Advanced require_once dirname(__FILE__) . '/options-advanced.php'; } } add_action('init', 'siteseo_load_advanced_admin_options', 11); function siteseo_load_advanced_admin_options(){ // Advanced (admin) require_once dirname(__FILE__) . '/options-advanced-admin.php'; //Admin bar function siteseo_advanced_appearance_adminbar_option(){ $options = get_option('siteseo_advanced_option_name'); if (!empty($options)){ if(isset($options['appearance_adminbar'])){ return $options['appearance_adminbar']; } } } if('' != siteseo_advanced_get_option('appearance_adminbar')){ add_action('admin_bar_menu', 'siteseo_advanced_appearance_adminbar_hook', 999); function siteseo_advanced_appearance_adminbar_hook($wp_admin_bar){ $wp_admin_bar->remove_node('siteseo'); } } } //Add nofollow noopener noreferrer to comments form link if('1' == siteseo_advanced_get_option('advanced_comments_form_link')){ /* Custom attributes on comment link */ add_filter('comments_popup_link_attributes', 'siteseo_comments_popup_link_attributes'); function siteseo_comments_popup_link_attributes($attr){ $attr = 'rel="nofollow noopener noreferrer"'; return $attr; } } //primary category function siteseo_titles_primary_cat_hook($cats_0, $cats, $post){ $primary_cat = null; if($post){ $_siteseo_robots_primary_cat = get_post_meta($post->ID, '_siteseo_robots_primary_cat', true); if (isset($_siteseo_robots_primary_cat) && '' != $_siteseo_robots_primary_cat && 'none' != $_siteseo_robots_primary_cat){ if (null != $post->post_type && 'post' == $post->post_type) { $primary_cat = get_category($_siteseo_robots_primary_cat); } if (! is_wp_error($primary_cat) && null != $primary_cat) { return $primary_cat; } } else { //no primary cat return $cats_0; } } else { return $cats_0; } } add_filter('post_link_category', 'siteseo_titles_primary_cat_hook', 10, 3); function siteseo_titles_primary_wc_cat_hook($terms_0, $terms, $post){ $primary_cat = null; if($post){ $_siteseo_robots_primary_cat = get_post_meta($post->ID, '_siteseo_robots_primary_cat', true); if (isset($_siteseo_robots_primary_cat) && '' != $_siteseo_robots_primary_cat && 'none' != $_siteseo_robots_primary_cat) { if (null != $post->post_type && 'product' == $post->post_type) { $primary_cat = get_term($_siteseo_robots_primary_cat, 'product_cat'); } if (! is_wp_error($primary_cat) && null != $primary_cat) { return $primary_cat; } } else { //no primary cat return $terms_0; } } else { return $terms_0; } } add_filter('wc_product_post_type_link_product_cat', 'siteseo_titles_primary_wc_cat_hook', 10, 3); //No /category/ in URL if('' != siteseo_advanced_get_option('advanced_category_url')){ //Flush permalinks when creating/editing/deleting post categories add_action('created_category', 'flush_rewrite_rules'); add_action('delete_category', 'flush_rewrite_rules'); add_action('edited_category', 'flush_rewrite_rules'); //@credits : WordPress VIP add_filter('category_rewrite_rules', 'siteseo_filter_category_rewrite_rules'); function siteseo_filter_category_rewrite_rules($rules){ if(class_exists('Sitepress')){ global $sitepress; remove_filter('terms_clauses', [$sitepress, 'terms_clauses']); $categories = get_categories(['hide_empty' => false]); add_filter('terms_clauses', [$sitepress, 'terms_clauses'], 10, 4); }else{ $categories = get_categories(['hide_empty' => false]); } if(is_array($categories) && ! empty($categories)){ $slugs = []; foreach ($categories as $category) { if (is_object($category) && ! is_wp_error($category)) { if (0 == $category->category_parent) { $slugs[] = $category->slug; } else { $slugs[] = trim(get_category_parents($category->term_id, false, '/', true), '/'); } } } if (! empty($slugs)) { $rules = []; foreach ($slugs as $slug) { $rules['(' . $slug . ')/feed/(feed|rdf|rss|rss2|atom)?/?$'] = 'index.php?category_name=$matches[1]&feed=$matches[2]'; $rules['(' . $slug . ')/(feed|rdf|rss|rss2|atom)/?$'] = 'index.php?category_name=$matches[1]&feed=$matches[2]'; $rules['(' . $slug . ')(/page/(\d+))?/?$'] = 'index.php?category_name=$matches[1]&paged=$matches[3]'; } } } $rules = apply_filters('siteseo_category_rewrite_rules', $rules); return $rules; } add_filter('term_link', 'siteseo_remove_category_base', 10, 3); function siteseo_remove_category_base($termlink, $term, $taxonomy){ if ('category' == $taxonomy) { $category_base = get_option('category_base'); if (class_exists('Sitepress') && defined('ICL_LANGUAGE_CODE')) { $category_base = apply_filters('wpml_translate_single_string', 'category', 'WordPress', 'URL category tax slug', ICL_LANGUAGE_CODE); } if ('' == $category_base) { $category_base = 'category'; } $category_base = apply_filters('siteseo_remove_category_base', $category_base); if ('/' == substr($category_base, 0, 1)) { $category_base = substr($category_base, 1); } $category_base .= '/'; return preg_replace('`' . preg_quote($category_base, '`') . '`u', '', $termlink, 1); } else { return $termlink; } } add_action('template_redirect', 'siteseo_category_redirect', 1); function siteseo_category_redirect(){ if (!is_category()) { return; } global $wp; $current_url = user_trailingslashit(home_url(add_query_arg([], $wp->request))); $category_base = get_option('category_base'); if (class_exists('Sitepress') && defined('ICL_LANGUAGE_CODE')) { $category_base = apply_filters('wpml_translate_single_string', 'category', 'WordPress', 'URL category tax slug', ICL_LANGUAGE_CODE); } $category_base = apply_filters('siteseo_remove_category_base', $category_base); if('' != $category_base){ $regex = sprintf('/\/%s\//', str_replace('/', '\/', $category_base)); if (preg_match($regex, $current_url)) { $new_url = str_replace('/' . $category_base, '', $current_url); wp_safe_redirect($new_url, 301); exit(); } }else{ $category_base = 'category'; $regex = sprintf('/\/%s\//', str_replace('/', '\/', $category_base)); if (preg_match($regex, $current_url)) { $new_url = str_replace('/' . $category_base, '', $current_url); wp_safe_redirect($new_url, 301); exit(); } } } } //No /product-category/ in URL if('' != siteseo_advanced_get_option('advanced_product_cat_url')){ //Flush permalinks when creating/editing/deleting product categories add_action('created_product_cat', 'flush_rewrite_rules'); add_action('delete_product_cat', 'flush_rewrite_rules'); add_action('edited_product_cat', 'flush_rewrite_rules'); add_filter('product_cat_rewrite_rules', 'siteseo_filter_product_category_rewrite_rules'); function siteseo_filter_product_category_rewrite_rules($rules){ if (class_exists('Sitepress')) { global $sitepress; remove_filter('terms_clauses', [$sitepress, 'terms_clauses']); $categories = get_terms(['taxonomy' => 'product_cat', 'hide_empty' => false]); add_filter('terms_clauses', [$sitepress, 'terms_clauses'], 10, 4); } else { $categories = get_terms(['taxonomy' => 'product_cat', 'hide_empty' => false]); } if(is_array($categories) && ! empty($categories)){ $slugs = []; foreach ($categories as $category) { if (is_object($category) && ! is_wp_error($category)) { if (0 == $category->parent) { $slugs[] = $category->slug; } else { $slugs[] = trim(get_term_parents_list($category->term_id, 'product_cat', ['separator' => '/', 'link' => false]), '/'); } } } if (! empty($slugs)) { $rules = []; foreach ($slugs as $slug) { $rules['(' . $slug . ')(/page/(\d+))?/?$'] = 'index.php?product_cat=$matches[1]&paged=$matches[3]'; $rules[$slug . '/(.+?)/page/?([0-9]{1,})/?$'] = 'index.php?product_cat=$matches[1]&paged=$matches[2]'; $rules[$slug . '/(.+?)/?$'] = 'index.php?product_cat=$matches[1]'; $rules[$slug . '/(.+?)/feed/(feed|rdf|rss|rss2|atom)/?$'] = 'index.php?product_cat=$matches[1]&feed=$matches[2]'; $rules[$slug . '/(.+?)/(feed|rdf|rss|rss2|atom)/?$'] = 'index.php?product_cat=$matches[1]&feed=$matches[2]'; $rules[$slug . '/(.+?)/embed/?$'] = 'index.php?product_cat=$matches[1]&embed=true'; } } } $rules = apply_filters('siteseo_product_category_rewrite_rules', $rules); return $rules; } add_filter('term_link', 'siteseo_remove_product_category_base', 10, 3); function siteseo_remove_product_category_base($termlink, $term, $taxonomy){ if('product_cat' == $taxonomy){ $category_base = get_option('woocommerce_permalinks'); $category_base = $category_base['category_base']; if(class_exists('Sitepress') && defined('ICL_LANGUAGE_CODE')){ $category_base = apply_filters('wpml_translate_single_string', 'product_cat', 'WordPress', 'URL product category tax slug', ICL_LANGUAGE_CODE); } if ('' == $category_base) { $category_base = 'product-category'; } $category_base = apply_filters('siteseo_remove_product_category_base', $category_base); if ('/' == substr($category_base, 0, 1)) { $category_base = substr($category_base, 1); } $category_base .= '/'; return preg_replace('`' . preg_quote($category_base, '`') . '`u', '', $termlink, 1); } else { return $termlink; } } add_action('template_redirect', 'siteseo_product_category_redirect', 1); function siteseo_product_category_redirect(){ global $wp; $current_url = user_trailingslashit(home_url(add_query_arg([], $wp->request))); $category_base = get_option('woocommerce_permalinks'); $category_base = $category_base['category_base']; if (class_exists('Sitepress') && defined('ICL_LANGUAGE_CODE')) { $category_base = apply_filters('wpml_translate_single_string', 'product_cat', 'WordPress', 'URL product category tax slug', ICL_LANGUAGE_CODE); } $category_base = apply_filters('siteseo_remove_product_category_base', $category_base); if ('' != $category_base) { if (preg_match('/\/' . $category_base . '\//', $current_url)) { $new_url = str_replace('/' . $category_base, '', $current_url); wp_safe_redirect($new_url, 301); exit(); } } else { $category_base = 'product-category'; if (preg_match('/\/' . $category_base . '\//', $current_url)) { $new_url = str_replace('/' . $category_base, '', $current_url); wp_safe_redirect($new_url, 301); exit(); } } } } }