Добавить правила перезаписи в al oop для пользовательских категорий - PullRequest
0 голосов
/ 19 марта 2020

Я пытаюсь добавить новую конечную точку для своей пользовательской категории. У меня есть пост, подобный этому www.mysite.com/my-post/, и с этого сайта я бы хотел go страницу www.mysite.com/my-post/my-custom-category/. Я также хотел бы, чтобы этот URL отображал содержимое файла promos. php.

Хитрость в том, что я не могу добавить stati c add_rewrite_endpoint () , потому что категории могут измениться, удалить или добавить. Поэтому я пришел к этой идее:

add_filter('init', 'add_review_rewrite_rules');

    function add_review_rewrite_rules() {
        $args = array(
            'post_type' => 'promo',
            'taxonomy' => 'promos'
        );
        $cats = get_categories($args);
        foreach($cats as $cat) {
            $cat_slug = $cat->slug;
            add_rewrite_endpoint($cat_slug, EP_PERMALINK | EP_PAGES);
        }
    }

    function promos_template_redirect() {
        global $wp_query;

        $args = array(
            'post_type' => 'promo',
            'taxonomy' => 'promos'
        );
        $cats = get_categories($args);
        foreach($cats as $cat) {
            $cat_slug = $cat->slug;

            if ( ! isset( $wp_query->query_vars[$cat_slug] ) || !is_singular() )
                return;

            // include custom template
            include dirname( __FILE__ ) . '/promos.php';

        }
        exit;
    }
    add_action( 'template_redirect', 'promos_template_redirect' );

Работает только в первой категории (в алфавитном порядке). Для первого он правильно отображает содержимое промо. php, но для остальных он идет на новый URL, но отображает содержание www.mysite.com/my-post/. Промо-тип поста является индивидуальным, а промо-акция - таксономией для данного типа поста.

Я пробовал обновлять настройки постоянных ссылок после каждого изменения в этом фрагменте кода, он все еще не работает. Этот код неправильный или есть другой способ сделать это? Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...