Intereting Posts
Запрос для пользовательского типа сообщения? Какой URL указывает на какой файл Отображение всех носителей из всех мультисайтов Как контролировать размер отображения мультимедийных носителей с помощью собственного проигрывателя wordpress Получить тип расширенного настраиваемого поля (ACF) в цикле WP_Query Связывание настраиваемого элемента подменю с типом пункта верхнего уровня верхнего уровня Загрузка файлов без мультимедиа? Query Posts, order by meta value создать отдельный шаблон страницы для комментариев WordPress WordPress Network (multisite) – как обеспечить, чтобы каждый сайт имел свой собственный URL-адрес администратора? Плагин WordPress со своим собственным сайтом / темой перемещение таблиц между многопользовательскими установками добавление выбора цвета в настройке (разработка темы) Все страницы ведут к дому Мета-запрос для пользовательской таксономии при вложении

Добавление значений meta в permalink

У меня есть публикации, и я хочу просто добавить год и месяц на постоянную ссылку. В настоящее время год и месяц публикации добавляются к сообщению в качестве метазначения. Я создал публикации как пользовательский тип сообщения и создал таксономию для конкретного названия публикации. Я бы хотел, чтобы постоянная ссылка была:

публикации / публикации титульные / год опубликовано / месяц опубликовано / имя-пост

Я просто хочу добавить мета значения для года и месяца публикации в постоянную ссылку.

До сих пор я смог опубликовать год и месяц и добавить его в URL-адрес, но, к сожалению, я продолжаю получать 404, когда пытаюсь получить доступ к сообщениям. Я думаю, что я ошибаюсь с одним из моих шагов ниже …

Любая помощь будет оценена по достоинству.

Это шаги, которые я сделал в следующем порядке:

  1. Поскольку я добавлял год публикации и год публикации к URL-адресу, я читал, что мне нужно было сообщить WordPress об этих настраиваемых переменных запроса. Я добавил следующие функции для регистрации этих настраиваемых переменных:

    function pubyear_register_rewrite_tag() { add_rewrite_tag( '%pubyear%', '([0-9]{4})'); } add_action( 'init', 'pubyear_register_rewrite_tag'); function pubmonth_register_rewrite_tag() { add_rewrite_tag( '%pubmonth%', '([0-9]{2}'); } add_action( 'init', 'pubmonth_register_rewrite_tag'); 

2) Добавлен год и месяц в структуру постоянной ссылки:

 add_filter('post_type_link', 'pub_term_permalink', 10, 4); function pub_term_permalink($permalink, $post, $leavename, $sample) { if ( false !== strpos( $permalink, '%publication-title%/%pubyear%/%pubmonth%' ) ) { //get the publication-title $publicationtype = get_the_terms( $post->ID, 'publication-type' ); //get the year of the publication $pubyear = date('Y', get_post_meta($post->ID, 'pub_date', true)); //get the month of the publication $pubmonth = date('m', get_post_meta($post->ID, 'pub_date', true)); $rewritecode = array( '%publication-type%', '%pubyear%', '%pubmonth%', $leavename? '' : '%postname%', ); $rewritereplace = array( array_pop($publicationtype)->slug, $pubyear, $pubmonth, $post->post_name ); $permalink = str_replace($rewritecode, $rewritereplace, $permalink); } return $permalink; } 

3) Добавьте правила перезаписи:

 function pub_add_rewrite_rules() { add_rewrite_rule( '^([^/]*)/([0-9]{4})/([0-9]{2})/([^/]+)?', 'publications/index.php?pagename=$matches[3]', 'top' ); } add_action( 'init', 'pub_add_rewrite_rules' ); 

4) Убедитесь, что пользовательский тип сообщения зарегистрирован и включает этот массив перезаписи:

 'rewrite' => array ( 'slug' => 'publications/%publication-type%/%pubyear%/%pubmonth%', 'with_front' => false ), 

Был способен заставить это работать. Думал, что я напишу, что мы сделали в надежде, что это поможет кому-то в будущем (или кто-то может дать мне отзыв о том, как лучше его улучшить!)

  1. Зарегистрированные пользовательские правила перезаписи

     add_action('init', 'pub_rewrite_rules'); function pub_rewrite_rules() { global $wp_rewrite; $wp_rewrite->add_rewrite_tag( '%pubyear%', '([0-9]{4})', 'pubyear='); $wp_rewrite->add_rewrite_tag( '%pubmonth%', '([0-9]{2})', 'pubmonth='); } 
  2. Созданная структура Permalink

      function pub_permalink($permalink, $post, $leavename) { if ( false !== strpos( $permalink, '%publication-type%/%pubyear%/%pubmonth%' ) ) { $publicationtype = get_the_terms($post->ID, 'publication-type'); $pubyear = date('Y', get_post_meta($post->ID, 'publication_date', true)); $pubmonth = date('m', get_post_meta($post->ID, 'publication_date', true)); $rewritecode = array( '%publication-type%', '%pubyear%', '%pubmonth%', $leavename? '' : '%postname%', ); $rewritereplace = array( array_pop($publicationtype)->slug, $pubyear, $pubmonth, $post->post_name ); $permalink = str_replace($rewritecode, $rewritereplace, $permalink); } return $permalink; } 
  3. Зарегистрированная таксономия

  4. Зарегистрированный пользовательский тип сообщения написал массив перезаписи для включения:

      'slug' => 'publications/%publication-type%/%pubyear%/%pubmonth%', 
  5. flush переписать правила, перейдя на страницу настроек Permalink и сохранить или flush_rewrite_rule ()