Сборка материалов по Wordpress

Убрать кликабельность активного пункта меню - v2

Открыть

        
// theme/header.php ( или где меню )

$menu =  wp_nav_menu(array(  //сохраняем в переменную, не выводим
             'echo' => false, // добавить параметр
));
retter241_main_menu_no_link($menu);

// theme/function.php

function retter241_main_menu_no_link ($menu) {

    /* //если надо условие
    if(get_page_uri() != 'glavnaya'){
       $replace =  preg_replace('/(current-menu-item[^>]+>)#]+>(.*?)<\/a>(<\/li>)/s', '$1$2$3', $menu );
    }else{
        $replace = $menu;
    }
    echo $replace;*/
    
    //если нет - 
    
     $replace =  preg_replace('/(current-menu-item[^>]+>)#]+>(.*?)<\/a>(<\/li>)/s', '$1$2$3', $menu );
     echo $replace;
}
        
    

Убрать type у link и script ( для валидатора)

Открыть

        
// theme/function.php

add_action( 'template_redirect', function(){
    ob_start( function( $buffer ){
        $buffer = str_replace( array( 'type="text/javascript"', "type='text/javascript'" ), '', $buffer );
        $buffer = str_replace( array( 'type="text/css"', "type='text/css'" ), '', $buffer );
        return $buffer;
    });
});
        
    

Убрать page/1 на пагинации WP

если используется paginate_links ( почти всегда )

Открыть

        
// theme/function.php

function pagination_mod_first_off( $args ){
  $args = str_replace('/page/1/', '/', $args);
  return $args;
}
add_filter( 'paginate_links', 'pagination_mod_first_off', 1 );
        
    

Сервис для генерации чистого шаблона для wp

Ссылка

Сборка бесплатных шаблонов Wp - Wc

Ссылка

Чистая дочерняя тема для WC

Ссылка

С wc плагин незаменимый

Открыть

display-template-name

Микроразметка контактов

Открыть

https://it-svalka.ru/seo-optimizatsiya/mikrorazmetka-stranitsy-kontaktov.html

Микроразметка хлебных крошек (для WP - в Shema Org - вкладка WP )

Открыть

    
<div class="breadcrumbs" xmlns:v="http://rdf.data-vocabulary.org/#">
    <ul>
<!-- Breadcrumb NavXT 6.3.0 -->
<li class="home"><span property="itemListElement" typeof="ListItem"><a property="item" typeof="WebPage" title="Перейти к Vape-pros.com." href="http://vape-pros.com" class="home"><span property="name">Home</span></a><meta property="position" content="1"></span></li>
<li class="post post-special-archive"><span property="itemListElement" typeof="ListItem"><a property="item" typeof="WebPage" title="Перейти к Specials." href="http://vape-pros.com/specials/" class="post post-special-archive"><span property="name">Specials</span></a><meta property="position" content="2"></span></li>
<li class="post post-special current-item"><span class="post post-special current-item">Lorem Ipsum 4</span></li>
    </ul>
    </div>
   

Заметки и плагины

открыть ссылки

        
https://delaemsait.info/mikrorazmetka-stati/
https://wpmaster.kz/mikrorazmetka-schema-open-graph-json/#Schemaorg


Template: twentytwenty - для обьявления дочерней темой

	
Carbon Fields

Query Monitor

tgm-plugin-activation

        
    

Версия для слабовидящих ( +озвучка при языв. версиях )

Открыть

        
            function footer_script_remove_vision_button_langs()
{
    echo '< script src="https://lidrekon.ru/slep/js/uhpv-full.min.js">';
    echo "< script >
  $(document).ready(function(){
        if (location.toString().indexOf('/en/') !== -1) {
            $('.special-audio').hide();
        }
        if (location.toString().indexOf('/by/') !== -1) {
            $('.special-audio').hide();
        }
    });
< /script >";
}

add_action('wp_footer', 'footer_script_remove_vision_button_langs', 99);
        
    

Работа с wp cron

+ Получение записей по параметрам ( с произвольными полями )

+ регистрация cron event xthtp hook-action-function

+ Логирование в файл ( theme/logs/cron_log.txt )

Открыть

        
            
// добавляем запланированный хук
add_action( 'wp', 'cron_deactivate_ads_hook' );
function cron_deactivate_ads_hook() {
    if( ! wp_next_scheduled( 'schedule_deactivate_ads_hook' ) ) {
        wp_schedule_event( time(), 'daily', 'schedule_deactivate_ads_hook');
    }
    wp_clear_scheduled_hook( 'schedule_deactivate_ads_hook' );
}


// добавляем функцию к указанному хуку
/*
 * Функцию снятия с публикации по крону просроченных обьявлений
 */
add_action( 'schedule_deactivate_ads_hook', 'do_this_daily' );
function do_this_daily() {
    // делаем что-либо каждый день

    $ads_off_posts = get_posts(array(
        'post_type' => 'ads_dir_ltg',
        'order' => 'ASC',
        'post_status' => 'publish',
        'posts_per_page' => -1,
        'meta_query' => [
            'relation' => 'AND',
            [
                'key' => '_drts_field_date_established',
                'value' => time(),
                'compare' => '<'
            ],
        ],
    ));
    $updating_posts = 0 ;
    $ids_posts = array();
    foreach($ads_off_posts as $post) {
        setup_postdata($post);
        //dump($post);

        //$post_new['ID'] = 3814;
        if($post->post_status === 'publish' /*&& $post->ID === 3814*/){

            $post_new = array();
            $post_new['ID'] = $post->ID;
            $post_new['post_status'] = 'draft';
            // dump($post_new);
            wp_update_post( wp_slash($post_new) );
            $updating_posts++;
            $ids_posts[] = $post->ID;
        }
    }
    $counter = count($ads_off_posts);


    $log_content = '';
    $fp=fopen(__DIR__ . '/logs/cron_log.txt',"a");
    if($fp){
        $log_content .= "\r\n"."Дата: " . current_time( 'Y-m-d H:i:s', $gmt );;
        $log_content .= "\r\n"." Всего постов: " . $counter;
        $log_content .= "\r\n"." Снято с публикации постов: " . $updating_posts;
        $log_content .= "\r\n"."id снятых с публикации постов: " .implode(' | ', $ids_posts);
        $log_content .= "\r\n";
        $log_content .= "\r\n";

        fwrite($fp, "\r\n" . $log_content);
        fclose($fp);
    }

    wp_reset_postdata();

}

//Для удаления крон-ивента
//wp_clear_scheduled_hook( 'schedule_deactivate_ads_hook' );
        
    

Замена активного пункта меню wp_nav_menu

Открыть

        
function mayak_nav_menu_no_link($no_link){
    $gg_mk = '!<li(.*?)class="(.*?)current_page_item(.*?)"><a(.*?)>(.*?)</a>!si';
    $dd_mk = '<li$1class="\\2current_page_item\\3"><span>$5</span>';
    return preg_replace($gg_mk, $dd_mk, $no_link );
}
add_filter('wp_nav_menu', 'mayak_nav_menu_no_link');
        
    

Breadcrumbs с поддержкой Woo и Perfect WooCommerce Brands

На основе Dimox breadcrumbs
Источник : http://dimox.name/wordpress-breadcrumbs-without-a-plugin

Открыть

        
function theme_breadcrumbs()
{
    /* === ОПЦИИ === */
    $text['home'] = 'Home'; // текст ссылки "Главная"
    $text['category'] = '%s'; // текст для страницы рубрики
    $text['search'] = 'Search results for the query "%s"'; // текст для страницы с результатами поиска
    $text['tag'] = 'Tag entries "%s"'; // текст для страницы тега
    $text['author'] = 'Author\'s articles %s'; // текст для страницы автора
    $text['404'] = 'Error 404'; // текст для страницы 404
    $text['page'] = 'Page %s'; // текст 'Страница N'
    $text['cpage'] = 'Comment page %s'; // текст 'Страница комментариев N'
    $wrap_before = ''; // закрывающий тег обертки
    $sep = '  '; // разделитель между "крошками"
    $before = ''; // тег перед текущей "крошкой"
    $after = ''; // тег после текущей "крошки"
    $show_on_home = 0; // 1 - показывать "хлебные крошки" на главной странице, 0 - не показывать
    $show_home_link = 1; // 1 - показывать ссылку "Главная", 0 - не показывать
    $show_current = 1; // 1 - показывать название текущей страницы, 0 - не показывать
    $show_last_sep = 1; // 1 - показывать последний разделитель, когда название текущей страницы не отображается, 0 - не показывать
    /* === КОНЕЦ ОПЦИЙ === */
    global $post;
    $home_url = home_url('/');
    $shop_url = home_url('shop');
    $link = '';
    $link .= '%2$s';
    $link .= '';
    $link .= '';
    $parent_id = ($post) ? $post->post_parent : '';
    $home_link = sprintf($link, $home_url, $text['home'], 1);
    if (is_home() || is_front_page()) {
        if ($show_on_home) echo $wrap_before . $home_link . $wrap_after;
    } else {
        $position = 0;
        echo $wrap_before;
        if ($show_home_link) {
            $position += 1;
            echo $home_link;
        }
        if (is_category()) {
            $parents = get_ancestors(get_query_var('cat'), 'category');
            foreach (array_reverse($parents) as $cat) {
                $position += 1;
                if ($position > 1) echo $sep;
                echo sprintf($link, get_category_link($cat), get_cat_name($cat), $position);
            }
            if (get_query_var('paged')) {
                $position += 1;
                $cat = get_query_var('cat');
                echo $sep . sprintf($link, get_category_link($cat), get_cat_name($cat), $position);
                echo $sep . $before . sprintf($text['page'], get_query_var('paged')) . $after;
            } else {
                if ($show_current) {
                    if ($position >= 1) echo $sep;
                    echo $before . sprintf($text['category'], single_cat_title('', false)) . $after;
                } elseif ($show_last_sep) echo $sep;
            }
        } elseif (is_search()) {
            if ($show_home_link && $show_current || !$show_current && $show_last_sep) echo $sep;
            if ($show_current) echo $before . sprintf($text['search'], get_search_query()) . $after;
        } elseif (is_year()) {
            if ($show_home_link && $show_current) echo $sep;
            if ($show_current) echo $before . get_the_time('Y') . $after;
            elseif ($show_home_link && $show_last_sep) echo $sep;
        } elseif (is_month()) {
            if ($show_home_link) echo $sep;
            $position += 1;
            echo sprintf($link, get_year_link(get_the_time('Y')), get_the_time('Y'), $position);
            if ($show_current) echo $sep . $before . get_the_time('F') . $after;
            elseif ($show_last_sep) echo $sep;
        } elseif (is_day()) {
            if ($show_home_link) echo $sep;
            $position += 1;
            echo sprintf($link, get_year_link(get_the_time('Y')), get_the_time('Y'), $position) . $sep;
            $position += 1;
            echo sprintf($link, get_month_link(get_the_time('Y'), get_the_time('m')), get_the_time('F'), $position);
            if ($show_current) echo $sep . $before . get_the_time('d') . $after;
            elseif ($show_last_sep) echo $sep;
        } elseif (is_single() && !is_attachment()) {
            if (get_post_type() != 'post') {
                $position += 1;
                $post_type = get_post_type_object(get_post_type());
                if ($position > 1) echo $sep;
                echo sprintf($link, get_post_type_archive_link($post_type->name), $post_type->labels->name, $position);
                /*type product*/
                if (get_post_type() === 'product') {
                    $position += 1;
                    if ($position > 1) echo $sep;
                    global $product;

                    foreach($product->category_ids as $element){
                        $taxonomy  = get_term( $element );
                        if($taxonomy->parent != ''){
                            $taxonomy_child  = get_term($taxonomy->parent);
                            //dump($taxonomy_child);
                            echo sprintf($link, get_term_link($taxonomy_child->term_id), $taxonomy_child->name, $position).$sep;
                        }
                      /*  //dump(get_permalink($element) );
                        echo sprintf($link, get_permalink($taxonomy), $taxonomy->label, $position);*/
                    }echo sprintf($link, get_term_link($taxonomy->term_id), $taxonomy->name, $position);
                }/*end*/
                if ($show_current) echo $sep . $before . get_the_title() . $after;
                elseif ($show_last_sep) echo $sep;
            }
            else {
                $cat = get_the_category();
                $catID = $cat[0]->cat_ID;
                $parents = get_ancestors($catID, 'category');
                $parents = array_reverse($parents);
                $parents[] = $catID;
                foreach ($parents as $cat) {
                    $position += 1;
                    if ($position > 1) echo $sep;
                    echo sprintf($link, get_category_link($cat), get_cat_name($cat), $position);
                }
                if (get_query_var('cpage')) {
                    $position += 1;
                    echo $sep . sprintf($link, get_permalink(), get_the_title(), $position);
                    echo $sep . $before . sprintf($text['cpage'], get_query_var('cpage')) . $after;
                } else {
                    if ($show_current) echo $sep . $before . get_the_title() . $after;
                    elseif ($show_last_sep) echo $sep;
                }
            }
        } elseif (is_post_type_archive()) {

            $post_type = get_post_type_object(get_post_type());
            if (get_query_var('paged')) {
                $position += 1;
                if ($position > 1) echo $sep;
                echo sprintf($link, get_post_type_archive_link($post_type->name), $post_type->label, $position);
                echo $sep . $before . sprintf($text['page'], get_query_var('paged')) . $after;
            } else {
                if ($show_home_link && $show_current) echo $sep;
                if ($show_current) echo $before . $post_type->label . $after;
                elseif ($show_home_link && $show_last_sep) echo $sep;
            }
        }
        /* shop categories */
        elseif(is_tax()) {
            $position += 1;
            if ($position > 1) echo $sep;
            $post_type = get_post_type_object(get_post_type());
            $this_term = $GLOBALS['wp_query']->get_queried_object();
            //var_dump($this_term->taxonomy === 'pwb-brand');

            /*
             * Если у текущей категории нет родителя и тип - бренд
             * выводим ссылку на общую страницу брендов
             * у бренда нет вложенности
             */
            if($this_term->parent === 0 && $this_term->taxonomy === 'pwb-brand'){
                //var_dump($this_term);
                echo sprintf($link, get_permalink( get_page_by_path( 'brand' ) ), 'Brand', $position);
            }
            /*
             * Если у текущей категории нет родителя и это НЕ бренд -
             * выводим ссылку на категорию магазина
             */
            elseif($this_term->parent === 0 && $this_term->taxonomy !== 'pwb-brand'){
                echo sprintf($link, get_permalink(wc_get_page_id( 'shop' )), $post_type->label, $position);
            }
            /*
             * Если у категории есть родительская - добавляем в вывод
             */
            elseif ($this_term->parent != 0){
                echo sprintf($link, get_permalink(wc_get_page_id( 'shop' )), $post_type->label, $position).$sep;
                    $taxonomy  = get_term( $this_term->parent );
                    echo sprintf($link, get_term_link($taxonomy->term_id), $taxonomy->name, $position);
                //var_dump($this_term);
            }
            if ($show_current) echo $sep . $before . $this_term->name . $after;
            elseif ($show_home_link && $show_last_sep) echo $sep;
        }
        elseif (is_attachment()) {
            $parent = get_post($parent_id);
            $cat = get_the_category($parent->ID);
            $catID = $cat[0]->cat_ID;
            $parents = get_ancestors($catID, 'category');
            $parents = array_reverse($parents);
            $parents[] = $catID;
            foreach ($parents as $cat) {
                $position += 1;
                if ($position > 1) echo $sep;
                echo sprintf($link, get_category_link($cat), get_cat_name($cat), $position);
            }
            $position += 1;
            echo $sep . sprintf($link, get_permalink($parent), $parent->post_title, $position);
            if ($show_current) echo $sep . $before . get_the_title() . $after;
            elseif ($show_last_sep) echo $sep;
        } elseif (is_page() && !$parent_id) {
            if ($show_home_link && $show_current) echo $sep;
            if ($show_current) echo $before . get_the_title() . $after;
            elseif ($show_home_link && $show_last_sep) echo $sep;
        } elseif (is_page() && $parent_id) {
            $parents = get_post_ancestors(get_the_ID());
            foreach (array_reverse($parents) as $pageID) {
                $position += 1;
                if ($position > 1) echo $sep;
                echo sprintf($link, get_page_link($pageID), get_the_title($pageID), $position);
            }
            if ($show_current) echo $sep . $before . get_the_title() . $after;
            elseif ($show_last_sep) echo $sep;
        } elseif (is_tag()) {
            if (get_query_var('paged')) {
                $position += 1;
                $tagID = get_query_var('tag_id');
                echo $sep . sprintf($link, get_tag_link($tagID), single_tag_title('', false), $position);
                echo $sep . $before . sprintf($text['page'], get_query_var('paged')) . $after;
            } else {
                if ($show_home_link && $show_current) echo $sep;
                if ($show_current) echo $before . sprintf($text['tag'], single_tag_title('', false)) . $after;
                elseif ($show_home_link && $show_last_sep) echo $sep;
            }
        } elseif (is_author()) {
            $author = get_userdata(get_query_var('author'));
            if (get_query_var('paged')) {
                $position += 1;
                echo $sep . sprintf($link, get_author_posts_url($author->ID), sprintf($text['author'], $author->display_name), $position);
                echo $sep . $before . sprintf($text['page'], get_query_var('paged')) . $after;
            } else {
                if ($show_home_link && $show_current) echo $sep;
                if ($show_current) echo $before . sprintf($text['author'], $author->display_name) . $after;
                elseif ($show_home_link && $show_last_sep) echo $sep;
            }
        } elseif (is_404()) {
            if ($show_home_link && $show_current) echo $sep;
            if ($show_current) echo $before . $text['404'] . $after;
            elseif ($show_last_sep) echo $sep;
        } elseif (has_post_format() && !is_singular()) {
            if ($show_home_link && $show_current) echo $sep;
            echo get_post_format_string(get_post_format());
        }
        echo $wrap_after;
    }
} // end of dimox_breadcrumbs()


//Использование : 

 if (function_exists('theme_breadcrumbs')) theme_breadcrumbs();
        
    

WP Woo Checkout customize fields

Открыть

          
/*
 * Обязательность полей
 * - остальные так же
 */
 
 function custom_my_fields($fields) {

    $fields["billing"]["billing_first_name"]["required"] = false; // Фамилия не обязательна
    $fields["billing"]["billing_phone"]["required"] = true; // Телефон обязателен

    return $fields;
}
add_filter("woocommerce_checkout_fields", "custom_my_fields");
              
              
              
/*
 * Формиреуем поля чекаута
 */
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );

function custom_override_checkout_fields( $fields ) {
    //unset($fields['billing']['billing_first_name']);// имя
    unset($fields['billing']['billing_last_name']);// фамилия
    unset($fields['billing']['billing_company']); // компания
    unset($fields['billing']['billing_address_1']);//
    unset($fields['billing']['billing_address_2']);//
    unset($fields['billing']['billing_city']);
    unset($fields['billing']['billing_postcode']);
    unset($fields['billing']['billing_country']);
    unset($fields['billing']['billing_state']);
    //unset($fields['billing']['billing_phone']);
    //unset($fields['order']['order_comments']);
    //unset($fields['billing']['billing_email']);
    unset($fields['account']['account_username']);
    unset($fields['account']['account_password']);
    unset($fields['account']['account_password-2']);


    unset($fields['billing']['billing_company']);// компания
    unset($fields['billing']['billing_postcode']);// индекс


    $fields['billing']['billing_email']['required'] = true;



    return $fields;
}


/*
 * Обрабатываем checkbox terms and consitions
 * и скрываем css
 */
function set_checked_wc_terms( $terms_is_checked ) {
    return true;
}
add_filter( 'woocommerce_terms_is_checked_default', 'set_checked_wc_terms', 10 );

/*
 * Удаляем способы оплаты
 */
add_filter( 'woocommerce_cart_needs_payment', '__return_false' );


/**
 * Добавляем поле Реквизиты на страницу оформления заказа
 */
add_action( 'woocommerce_before_order_notes', 'my_custom_checkout_field' );

function my_custom_checkout_field( $checkout ) {

    echo '< div id="rekvisiti" >';

    woocommerce_form_field( 'rekvisiti', array(
        'type'          => 'textarea',
        'class'         => array('my-field-class form-row-wide'),
        'label'         => __('Ревизиты'),
        'placeholder'   => __('Введите свои реквизиты'),
    ), $checkout->get_value( 'rekvisiti' ));

    echo '< /div >';
}


/**
 * Валидация поля Реквизиты в формы заказа
 */
//add_action('woocommerce_checkout_process', 'my_custom_checkout_field_process');

function my_custom_checkout_field_process() {
    if ( ! $_POST['rekvisiti'] )
        wc_add_notice( __( 'Поле Реквизиты является обязательным полем.' ), 'error' );
}

/**
 * Обновляем метаданные заказа со значением поля Реквизиты
 */
add_action( 'woocommerce_checkout_update_order_meta', 'my_custom_checkout_field_update_order_meta' );

function my_custom_checkout_field_update_order_meta( $order_id ) {
    if ( ! empty( $_POST['rekvisiti'] ) ) {
        update_post_meta( $order_id, 'Реквизиты', sanitize_text_field( $_POST['rekvisiti'] ) );
    }
}


/**
 * Выводим значение поля Реквизиты на странице редактирования заказа
 */
add_action( 'woocommerce_admin_order_data_after_billing_address', 'my_custom_checkout_field_display_admin_order_meta', 10, 1 );

function my_custom_checkout_field_display_admin_order_meta($order){
    echo '

'.__('Реквизиты').':
' . get_post_meta( $order->id, 'Реквизиты', true ) . '

'; }

WP YoastSeo Canonical Links

Открыть

        

/*
 * Замена canonical в страницах пагинации  , чтобы вели на первую страницу
 * define the wpseo_canonical callback
 */
function filter_wpseo_canonical( $canonical ) {
    if(is_paged()){
        $canonical = '';
        echo '';
    }
    elseif(is_shop()){
        $canonical = '';
        echo '';
    }
    elseif(is_category()){
        $canonical = '';
        echo '';
    }
    return $canonical;
};
add_filter( 'wpseo_canonical', 'filter_wpseo_canonical', 10, 1 );

        
    

WP YoastSeo ошибка валидатора jsonLd SearchType

Открыть

        
/*
 * Убираем yoast seo разметку поиска для устранения ошибки валидатора
 */
add_filter( 'disable_wpseo_json_ld_search', '__return_true' );
        
    

Исправление пагинации 404 на категории

Открыть

        
/**
 * Fix pagination on archive pages
 * After adding a rewrite rule, go to Settings > Permalinks and click Save to flush the rules cache
 */
function my_pagination_rewrite() {
    add_rewrite_rule('blog/page/?([0-9]{1,})/?$', 'index.php?category_name=blog&paged=$matches[1]', 'top');
   //add_rewrite_rule('brand/page/?([0-9]{1,})/?$', 'index.php?category_name=brand&paged=$matches[1]', 'top');
}
add_action('init', 'my_pagination_rewrite');
        
    

WP ошибка валидации body data-rsssl=1

Открыть

        
/*
 * Убираем ошибку body data-rsssl=1
 */
add_filter("rsssl_fixer_output", "rsssl_comment_remover", 10, 1);
function rsssl_comment_remover($buffer){
    $buffer = str_replace('data-rsssl=1', "", $buffer);
    return $buffer;

}
        
    

Ошибка Yoast Seo Ld/Search

Открыть

        
/*
 * Убираем yoast seo разметку поиска для устранения ошибки валидатора
 */
add_filter( 'disable_wpseo_json_ld_search', '__return_true' );


        
    
Тэги:

Комментарии (10)

r

/*
* Добавление метрики на кнопки
*/
add_action('wp_footer' , 'add_counters_on_buttons');
function add_counters_on_buttons () {
?>

r

echo '';

к

/*
* Добавление в тайтл и деск станиц при наличии пагинации
*/
add_filter('wpseo_title', 'add_to_page_titles');
add_filter('wpseo_metadesc', 'add_to_page_titles');
function add_to_page_titles($title) {
global $wp_query;
if (!$current = get_query_var('paged')) $current = 1;
if(is_paged()){
$title .= ' Страница '.$current.' из '.$wp_query->max_num_pages;
}
return $title;
}

r


/*
* Добавление страниц к заголовку на /blog
*/
function theme_title_with_pagination ($title) {
global $wp_query;
if (!$current = get_query_var('paged')) $current = 1;
if(is_paged()){
$title .= ' - Страница '.$current;
}
echo $title;
}

R


/*
* Замена canonical в страницах пагинации , чтобы вели на первую страницу
* define the wpseo_canonical callback
*/
function filter_wpseo_canonical( $canonical ) {
if(is_paged()){
$canonical = '';
//echo '';
echo '';
}
elseif(is_shop()){
$canonical = '';
//echo '';
}
elseif(is_single()){
$canonical = '';
//echo '';
}
elseif(is_category()){
$canonical = '';
//echo '';
}
elseif(is_front_page() || is_page()){
$canonical = '';
//echo '';
}
/*elseif(is_404()){
$canonical = '';
//echo '';
}*/
return $canonical;
};
add_filter( 'wpseo_canonical', 'filter_wpseo_canonical', 10, 1 );

retter241

Для валидатора - убрать type для script + link


add_action(
'after_setup_theme',
function() {
add_theme_support( 'html5', [ 'script', 'style' ] );
}
);

retter241

onetwostudy//com/css-animaciya-ikonki-gamburger-menyu/

retter241


jQuery('body').trigger('update_checkout');

jQuery(document).on('update_checkout' , function(e){

if(jQuery('#custom_one').val() != 'on'){
jQuery('#custom_one').trigger('click');
}

})


Оставить комментарий

Success/Error Message Goes Here

TOP