Ответы пользователя по тегу WordPress
  • Как в Wordpress сделать ссылки вида /категория/метка/запись/?

    RGameShow
    @RGameShow Автор вопроса
    В поисках ответов на глупые вопросы
    /**
     * Делаем ссылки вида: /%category%/%post_tag%/%postname%/ + настраиваем пагинацию
     */
    function flush_rewrite_rules_on_activation() {
        flush_rewrite_rules();
    }
    add_action( 'after_switch_theme', 'flush_rewrite_rules_on_activation' );
    function custom_rewrite_tag() {
        add_rewrite_tag('%tag%', '([^&]+)');
    }
    add_action('init', 'custom_rewrite_tag', 10, 0);
    
    function custom_rewrite_rules() {
        add_rewrite_rule('^(news||faq||actions)/page/([0-9]+)/?', 'index.php?category_name=$matches[1]&paged=$matches[2]', 'top');
        add_rewrite_rule('^(news||faq||actions)/([^/]*)/page/([0-9]+)/?', 'index.php?category_name=$matches[1]&tag=$matches[2]&paged=$matches[3]', 'top');
        add_rewrite_rule('^(news||faq||actions)/([^/]*)/([^/]*)/?', 'index.php?category_name=$matches[1]&tag=$matches[2]&name=$matches[3]', 'top');
    }
    add_action('init', 'custom_rewrite_rules');
    
    function custom_query_vars($query_vars) {
        $query_vars[] = 'tag';
        return $query_vars;
    }
    add_filter('query_vars', 'custom_query_vars');
    
    function custom_parse_request($query) {
        if (!empty($query->query_vars['tag']) && !empty($query->query_vars['category_name'])) {
            $post_tag = $query->query_vars['tag'];
            $category = $query->query_vars['category_name'];
    
            $term = get_term_by('slug', $post_tag, 'post_tag');
            if (!$term && $post_tag !== 'page' && $post_tag !== 'all') {
                global $wp_query;
                $wp_query->set_404();
                status_header(404);
                get_template_part(404);
                exit();
            }
            $args = array(
                'category_name' => $category,
                'tag' => $post_tag,
                'post_type' => 'post',
                'posts_per_page' => 1
            );
    
            $posts = get_posts($args);
    
            if (empty($posts) && $post_tag !== 'page' && $post_tag !== 'all') {
                global $wp_query;
                $wp_query->set_404();
                status_header(404);
                get_template_part(404);
                exit();
            }
        }
    }
    add_action('parse_request', 'custom_parse_request', 10, 1);
    
    /**
     * Редактируем ссылки на постах
     */
    function custom_permalink_structure($permalink, $post, $leavename) {
        if (strpos($permalink, '%tag%') === FALSE) return $permalink;
    
        // Получаем теги поста
        $tags = get_the_terms($post, 'post_tag');
    
        if (!is_wp_error($tags) && !empty($tags) && is_object($tags[0])) {
            $tag_slug = $tags[0]->slug;
        } else {
            $tag_slug = 'all';
        }
    
        $permalink = str_replace('%tag%', $tag_slug, $permalink);
        return $permalink;
    }
    add_filter('post_link', 'custom_permalink_structure', 10, 3);
    add_filter('post_type_link', 'custom_permalink_structure', 10, 3);
    Ответ написан
    Комментировать
  • Почему Browsersync не пускает в админку WordPress, а просто перезагружает страницу?

    RGameShow
    @RGameShow Автор вопроса
    В поисках ответов на глупые вопросы
    Выяснил что проблема такая из-за плагина Jetpack, пока не решил..
    Отключив плагин, все входит нормально. Включив, в админку не попасть...
    Ответ написан
    Комментировать
  • Как сделать, чтобы browsersync не перезагружал админку?

    RGameShow
    @RGameShow
    В поисках ответов на глупые вопросы
    snippetOptions: {
        ignorePaths: `${siteLocalURL}/wp-admin/!**`
    },
    Ответ написан
    Комментировать
  • Как настроить ЧПУ с Custom Post Type и Custom Taxonomies?

    RGameShow
    @RGameShow Автор вопроса
    В поисках ответов на глупые вопросы
    Все мои проблемы решил плагин: https://wordpress.org/plugins/wp-better-permalinks/
    Ответ написан
    Комментировать
  • Gutenberg стал как обычный редактор и не даёт добавлять блоки, что делать?

    RGameShow
    @RGameShow Автор вопроса
    В поисках ответов на глупые вопросы
    Переходим сюда: /wp-admin/users.php далее выбираем пользователя и внутри убираем галочку:
    61a63c9a510b7400923935.png
    Ответ написан
    Комментировать
  • Как настроить в multisite wordpress файлы sitemap.xml и robots.txt?

    RGameShow
    @RGameShow Автор вопроса
    В поисках ответов на глупые вопросы
    Помог этот плагин: Google Sitmap XML
    Ответ написан
    Комментировать
  • В WordPress Multisite пропал пункт меню СЕТЬ, и ПЛАГИНЫ как войти туда?

    RGameShow
    @RGameShow Автор вопроса
    В поисках ответов на глупые вопросы
    Мне помогло решение дать своему пользователю супер админские права:
    grant_super_admin('1');
    Ответ написан
    Комментировать
  • Пропал пункт меню «Управление сетью» в wordpress multisite, как вернуть и как попасть туда?

    RGameShow
    @RGameShow Автор вопроса
    В поисках ответов на глупые вопросы
    Мне помогло решение дать своему пользователю супер админские права:
    grant_super_admin('1');
    Ответ написан
    Комментировать
  • Как через WP_Query вывести товары в дефолтном виде?

    RGameShow
    @RGameShow Автор вопроса
    В поисках ответов на глупые вопросы
    Я решил вопрос костылями, но может кто знает решение по лучше?

    <section class="">
        <div class="container">
            <?php
            $loop = new WP_Query( array(
                'post_type' => 'product',
                'posts_per_page' => 2+1,
                'orderby' => 'menu_order',
                'order' => 'ASC',
            ));
            ?>
            <div class="woocommerce">
                <ul class="products products_archive_grid">
                    <?
                    while ( $loop->have_posts() ): $loop->the_post();
                        $id = get_the_ID();
                        $short = do_shortcode('[product id="'.$id.'"]');
                        $short = str_replace(
                            "<div class=\"woocommerce \"><ul class=\"products products_archive_grid\">",
                            "",
                            $short);
                        $short = substr($short,0,-11);
                        echo $short;
                    endwhile;
                    ?>
                </ul>
            </div>
        </div>
    </section>
    Ответ написан
    Комментировать
  • Как отображать кастомный блок ACF внутри Gutenberg, а не сбоку в sidebar?

    RGameShow
    @RGameShow Автор вопроса
    В поисках ответов на глупые вопросы
    При регистрации блока с помощью ACF в function.php, нужно в массив закинуть следущее значение:
    function rstheme_acf_blocks()
    {
        if ( function_exists('acf_register_block_type') ) {
            acf_register_block_type( array(
                .
                .
                .
                .
                .
                'mode' => 'edit' 
            ) );
        }
    }
    add_action('acf/init', 'rstheme_acf_blocks');

    Результат:
    5e281a3d851c4479728901.jpeg

    Подробнее тут: клик
    Ответ написан
  • Как создать категорию в Gutenberg?

    RGameShow
    @RGameShow Автор вопроса
    В поисках ответов на глупые вопросы
    add_filter('block_categories','rstheme_block_categories');
    function rstheme_block_categories($categories){
        return array_merge(
            array(
                array(
                    'slug'=>'my_category',
                    'title'=> 'Моя категория',
                    'icon'=>'feedback',
                    ),
                ),
            $categories
        );
    }
    Ответ написан
    Комментировать
  • Как в Gutenberg создать обертывающий блок, и добавлять внутрь него контент?

    RGameShow
    @RGameShow Автор вопроса
    В поисках ответов на глупые вопросы
    Решение:

    ( function( blocks, element, blockEditor ) {
    	let el = element.createElement;
    	let InnerBlocks = blockEditor.InnerBlocks;
    
    	blocks.registerBlockType( 'gutenberg-custom-block/section', {
    		title: 'Section', 					
    		description: 'section description', 
    		category: 'layout', 				
    		keywords: 'section', 				
    		icon: {
    			background: '#7e70af',
    			foreground: '#fff',
    			src: 'book-alt'
    		},
    
    		edit: function( props ) {
    			return el(
    				'section',
    				{ className: props.className},
    				el( InnerBlocks )
    			);
    		},
    
    		save: function( props ) {
    			return el(
    				'section',
    				{ className: props.className },
    				el( InnerBlocks.Content )
    			);
    		},
    	} );
    
    } (
    	window.wp.blocks,
    	window.wp.element,
    	window.wp.blockEditor,
    ) );


    На выходе получаем:
    <section class="wp-block-gutenberg-custom-block-section">
        <!-- ТУТ ВЛОЖЕННЫЕ БЛОКИ -->
    </section>


    Подробнее читайте тут
    Ответ написан
    Комментировать
  • Как в Contact Form 7 скрывать кнопку пока он думает?

    RGameShow
    @RGameShow Автор вопроса
    В поисках ответов на глупые вопросы
    Решение моей проблемы:
    $(document).ready(function( $ ) {
            function timer(element_class){
                let timer;
                let x = 4;
                let defVal = $(element_class).val();
    
                function countdown(){
                    $(element_class).val('Повторная отправка формы через: ' + x + 'сек.');
                    x--;
                    if (x<0){
                        clearTimeout(timer);
                        $(element_class).val(defVal);
                    }
                    else {
                        timer = setTimeout(countdown, 1000);
                    }
                }
                countdown();
            }
            document.addEventListener( 'wpcf7submit', function( event ) {
    
                let element_class = '#' + event.detail.id + ' .wpcf7-submit';
                timer(element_class);
                $(element_class).attr('disabled', 'disabled');
    
                setTimeout(function(){
                    $(element_class).removeAttr('disabled');
                }, 4000);
    
            }, false );
    
            document.addEventListener( 'wpcf7mailsent', function( event ) {
                let element_class = '#' + event.detail.id + ' .wpcf7-submit';
                $(element_class).remove();
            }, false );
        });
    Ответ написан
    Комментировать
  • Как перед отправкой заявки в Contact Form 7, перехватить данные и отправить их в CRM?

    RGameShow
    @RGameShow Автор вопроса
    В поисках ответов на глупые вопросы
    Вот решение!

    function send_info_crm(){
        require_once $_SERVER['DOCUMENT_ROOT'].'/order-crm.php';
    }
    add_action( 'wpcf7_mail_sent', 'send_info_crm');


    А в файле непосредственно работаем с данными.
    Ответ написан
    Комментировать
  • Как вывести все существующие метки кастомных записей?

    RGameShow
    @RGameShow Автор вопроса
    В поисках ответов на глупые вопросы
    $args = ['taxonomy' => 'regions','hide_empty' => false,];
    $categories = get_terms($args);
    Ответ написан
    Комментировать
  • Как получить id страницы is_home() - страница где выводятся записи?

    RGameShow
    @RGameShow Автор вопроса
    В поисках ответов на глупые вопросы
    get_option('page_for_posts')
    Ответ написан
    Комментировать
  • Как добавить input города в блок доставки WordPress Woocommrerce?

    RGameShow
    @RGameShow Автор вопроса
    В поисках ответов на глупые вопросы
    Если кому интересно будет решение данного вопроса, то я сделал следующим образом:

    Закинул файл из плагина /wp-content/plugins/woocommerce/cart/cart-shipping.php
    В свою тему /wp-content/themes/rstheme/woocommerce/cart/cart-shipping.php

    И вставил следующий код перед открывающимся тегом ul с классом woocommerce-shipping-methods

    <li>
        <div class="address-field" data-priority="40">
            <label for="billing_city" class="">Укажите город:
                <span class="woocommerce-input-wrapper">
                  <input type="text" class="input-text mt-1 m-0" id="demo1" name="billing_city">
                </span>
            </label>
        </div>
        <script>
            $(document).ready(function() {
                var b = $('#billing_city').val();
                $('#demo1').attr('value', b);
            });
            $('#demo1').keyup(function() {
                var a = $(this).val();
                $('#billing_city').attr('value', a);
            });
        </script>
    </li>


    А город который находится в деталях оплаты, скрыл.
    Ответ написан
    Комментировать
  • Как подключить стили в WordPress с GET запросом?

    RGameShow
    @RGameShow Автор вопроса
    В поисках ответов на глупые вопросы
    Ошибка была в коде, где я удалял версии скриптов...

    add_filter( 'script_loader_src', '_remove_script_version' );
    add_filter( 'style_loader_src', '_remove_script_version' );
    function _remove_script_version( $src ){
        $parts = explode( '?', $src );
        return $parts[0];
    }


    Исправил на следующий код:
    add_filter( 'script_loader_src', '_remove_script_version' );
    add_filter( 'style_loader_src', '_remove_script_version' );
    function _remove_script_version( $src ){
        $parts = explode( 'ver', $src );
        return $parts[0];
    }
    Ответ написан
    Комментировать
  • Функция the_excerpt() не работает на MultiSite WordPress, что делать?

    RGameShow
    @RGameShow Автор вопроса
    В поисках ответов на глупые вопросы
    В общем не получилось у меня решить данную проблему.. пришлось делать велосипед:

    <?php
          $excerpt = strip_tags(get_the_content());
          echo preg_replace('/[\s]{2,}/', ' ',mb_substr($excerpt,0,300,'UTF-8'));
          echo '<a href="'. get_permalink() . '" class="btn btn-common btn-rm d-block">Подробнее</a>'
    ?>
    Ответ написан
    Комментировать
  • Как написать аналог страницы "ЗАПИСИ" на WordPress?

    RGameShow
    @RGameShow Автор вопроса
    В поисках ответов на глупые вопросы
    ОТВЕТ СЛЕДУЮЩИЙ
    <?php
    
    add_action( 'init', 'register_post_types' );
    function register_post_types(){
    	register_post_type('post_type_name', array(
    		'label'  => null,
    		'labels' => array(
    			'name'               => '____', // основное название для типа записи
    			'singular_name'      => '____', // название для одной записи этого типа
    			'add_new'            => 'Добавить ____', // для добавления новой записи
    			'add_new_item'       => 'Добавление ____', // заголовка у вновь создаваемой записи в админ-панели.
    			'edit_item'          => 'Редактирование ____', // для редактирования типа записи
    			'new_item'           => 'Новое ____', // текст новой записи
    			'view_item'          => 'Смотреть ____', // для просмотра записи этого типа.
    			'search_items'       => 'Искать ____', // для поиска по этим типам записи
    			'not_found'          => 'Не найдено', // если в результате поиска ничего не было найдено
    			'not_found_in_trash' => 'Не найдено в корзине', // если не было найдено в корзине
    			'parent_item_colon'  => '', // для родителей (у древовидных типов)
    			'menu_name'          => '____', // название меню
    		),
    		'description'         => '',
    		'public'              => true,
    		'publicly_queryable'  => null, // зависит от public
    		'exclude_from_search' => null, // зависит от public
    		'show_ui'             => null, // зависит от public
    		'show_in_menu'        => null, // показывать ли в меню адмнки
    		'show_in_admin_bar'   => null, // по умолчанию значение show_in_menu
    		'show_in_nav_menus'   => null, // зависит от public
    		'show_in_rest'        => null, // добавить в REST API. C WP 4.7
    		'rest_base'           => null, // $post_type. C WP 4.7
    		'menu_position'       => null,
    		'menu_icon'           => null,
    		//'capability_type'   => 'post',
    		//'capabilities'      => 'post', // массив дополнительных прав для этого типа записи
    		//'map_meta_cap'      => null, // Ставим true чтобы включить дефолтный обработчик специальных прав
    		'hierarchical'        => false,
    		'supports'            => array('title','editor'), // 'title','editor','author','thumbnail','excerpt','trackbacks','custom-fields','comments','revisions','page-attributes','post-formats'
    		'taxonomies'          => array(),
    		'has_archive'         => false,
    		'rewrite'             => true,
    		'query_var'           => true,
    	) );
    }
    
    ?>
    Ответ написан
    Комментировать