@artyom_jeman

Wordpress Custom Post Type как создать дополнительную страницу?

Дано: Сайт на котором есть CPT записи.
Должно выйти: Страница полной записи CPT. Сделал в помощью файла single-{slug}.php
НО, еще нужно при создании какой-то записи создавать еще одну страницу, на которой будут типа отзывы об самой записи CPT. Сложно объяснил, но надеюсь поймете.
Пока ничего толкового не приходит в голову.
  • Вопрос задан
  • 338 просмотров
Решения вопроса 1
@artyom_jeman Автор вопроса
add_filter( 'query_vars', 'add_query_vars');

function add_query_vars($vars){
    $vars[] = "reviews";
    return $vars;
}
add_action('init', 'add_endpoints');

function add_endpoints(){
    global $wp_rewrite; 
    add_rewrite_endpoint('reviews', EP_ALL);
    $wp_rewrite->flush_rules();
}


Я так понял надо в эту сторону капать, но что-то не работает....
в файле single-{slug}.php пытаюсь вывести
get_query_var( 'reviews' )
и ничего не происходит)

UPD: Разобрался.
function wpa121567_rewrite_endpoints(){
    add_rewrite_endpoint( 'review', EP_PERMALINK );
}
add_action( 'init', 'wpa121567_rewrite_endpoints' );

создание EndPoint-а
if( array_key_exists( 'review', $wp_query->query_vars ) ){
  echo "1";
} 
else {
      echo "0";
}

Проверка на странице.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Endpoint для single-{slug}.php
Добавляете через add_rewrite_rule(), регистрируете query_var "reviews". В урл будет выглядеть как /post-type-slug/post-type-single-entry-slug/reviews/, а в самом темплейте перехватываете get_query_var( 'reviews' ) и в этом блоке if пишете нужную логику. Если саму запись на этой же странице ревьюс выводить не надо, то ее соответственно перемещаете в else этого блока.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы