плагин WordPress, как добавить правило перезаписи для пользовательского типа сообщения - PullRequest
0 голосов
/ 06 марта 2019

У меня есть пользовательский тип записи, так как этот код

public static function init() {
    add_action( 'init', array( __CLASS__, 'register_post_types' ), 10);
    add_filter('template_include', array( __CLASS__, 'exam_template'), 1);
}

public static function register_post_types() {
    $labels = array(
        'name'               => __( 'Exam Online', 'Edinnova' ),
        'singular_name'      => 'Exam',
        'add_new'            => 'Add New',
        'add_new_item'       => 'Add New '.'Exam Online',
        'edit_item'          => 'Edit '.'Exam Online',
        'new_item'           => 'New '.'Exam Online',
        'all_items'          => 'All '.'Exams',
        'view_item'          => 'View '.'Exam Online',
        'search_items'       => 'Search '.'Exam',
        'not_found'          =>  'No '.'Exam'.' Found',
        'not_found_in_trash' => 'No '.'Exam'.' Found In Trash',
        'parent_item_colon'  => '',
        'menu_name'          => 'Exam Online'
    );

    $args = array(
        'labels'             => $labels,
        'public'             => false,
        'publicly_queryable' => true,
        'show_ui'            => true,
        'show_in_menu'       => false,
        'query_var'          => true,
        'capability_type'    => 'post',
        'has_archive'        => false,
        'hierarchical'       => false,
        'menu_position'      => null,
        'supports'           => array( 'title', 'editor','thumbnail','author'),
        'capability_type'     => 'post',

    );
    register_post_type( 'exam_online', $args );

    add_rewrite_rule('exam_online/([^ /] +)/review', '?index.php&exam=$params[1]&review=yes', 'top');

    add_filter('query_vars', function($_vars) {
        $_vars[] = 'review';

        return $_vars;
    });

    flush_rewrite_rules();
}

public static function exam_template($template) {
        if (get_post_type() == 'exam_online') {
            if ($_GET['review'] == 'yes') {
                $single_template = dirname(__dir__).'/templates/review-exam_online.php';
            }

            $single_template = dirname(__dir__).'/templates/single-exam_online.php';
        }

        return $single_template;
    }

, когда я создаю пользовательский пост, затем просматриваю его на первой странице. У меня есть этот URL <domain>/exam_online/<post-url-slug>/

выше URL будет отображатьсяпо одному шаблону

, и я хочу, чтобы URL <domain>/exam_online/<post-url-slug>/review показывался по шаблону обзора

, но может быть что-то не так, когда я иду на URL <domain>/exam_online/<post-url-slug>/review всегда возвращать 404.

что не так с моим кодом?Пожалуйста, помогите!

еще один странный случай, когда я использую плагин Debug Bar Rewrite Rules, кажется, что WordPress не распознает мое правило перезаписи, потому что нет результата при поиске правила регулярных выражений.

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