Как сделать обычную страницу архивной

73
20 апреля 2022, 18:20

У меня есть кастомный тип записи stories, и страница gallery на которой выводятся превью этих записей. При переходе к записям адрес выходит таким site.ru/stories/post, вместо site.ru/gallery/post. Возникла идее создать страницу архива gallery, что б адрес выводился так как мне надо, но проблема в том, что на странице gallery много другой инфы которую человеку надо редактировать из админки. Не могу придумать как сделать так что б привязать кастомную запись к той странице или же что б редактировать архив в админке

Answer 1

По идее вы можете установить значение

'has_archive' => false

при регистрации произвольного типа записи и создать обычную страницу с таким же слагом, как и у вашего произвольного типа записи. Таким образом по той же урле будет доступна ваша страница и вы сможете ее редактированть из админки.

Answer 2

Нужно сделать два действия

  1. На лету хуком подменять ссылку для нужного типа поста
add_filter('pre_post_link', 'change_stories_link', 1, 3 );
function change_stories_link( $post_link, $id = 0 ) {
        
        $post = get_post( $id );
        if( $post->post_type == 'stories' &&  is_object( $post ) )  {
            
                         return '/gallery/'. $post->post_name;   
        }
        return   $post_link ;
}
  1. Сформировать новое правило для ссылки
add_action('init', 'generated_stories_rewrite_rules' ); 
function generated_stories_rewrite_rules() {
       
       add_rewrite_rule(
           '^gallery/(.*)/?$',
           'index.php?post_type=stories&name=$matches[1]',
           'top'
       );
       
       flush_rewrite_rules();
}
READ ALSO
Ошибка Undefined index: page

Ошибка Undefined index: page

В файле шаблона имеется код

118
Uncaught Error: Call to a member function fetch() on boolean in

Uncaught Error: Call to a member function fetch() on boolean in

помогите, пожалуйста, разобраться с ошибкой кодаЯ повторяла пример из книги PHP7 в подлиннике

233
Как поддерживать постоянную работу скрипта в фоновом режиме?

Как поддерживать постоянную работу скрипта в фоновом режиме?

На сервере поднимаю websocket сервер WorkermanДанный сервер запускается через командную строку (php cli) командой php start

214
Вывод готового изображения php скриптом

Вывод готового изображения php скриптом

В общем стоит такая задача:

150