2016-08-02 6 views
0

Я потратил несколько часов на то, чтобы найти решение этой проблемы, прочитать много статей и попробовать множество исправлений как из stackoverflow, так и из других источников, все без успеха.Wordpress Custom Permalink Структура для пользовательского типа сообщений

Я пытаюсь создать структуру permalink для настраиваемого типа сообщения, которое я создал в Wordpress (версия 4.5.3). Тип сообщения называется «видео». По умолчанию мои постоянные ссылки выглядят как «http://localhost.wordpress/videos/my-video-post». Я хотел бы заменить «видео» на ссылку с названием категории для сообщения, то есть 'http://localhost.wordpress/computer-lessons/my-video-post', где категория - «уроки компьютера». Мне удалось создать рабочие константы, такие как «http://localhost.wordpress/categories/computer-lessons/my-video-post», используя следующий код, но я хочу избавиться от части «/ categories /» в ссылке. Код Сейчас я использую это

add_action('init', 'video_post_type'); 

function video_post_type() { 
    register_post_type('video', array(
     'labels' => array(
      'name' => 'Videos', 
      'singular_name' => 'Video', 
     ), 
     'rewrite' => array('slug' => 'categories/%category%'), 
     'taxonomies' => array('post_tag', 'category'), 
     'description' => 'Video resources.', 
     'public' => true, 
     'menu_position' => 20, 
     'supports' => array('title', 'editor', 'custom-fields') 
    )); 
    } 

function videos_post_link($post_link, $id = 0){ 
    $post = get_post($id); 
    if (is_object($post)){ 
     $terms = wp_get_object_terms($post->ID, 'category'); 
     if($terms){ 
      return str_replace('%category%' , $terms[0]->slug , $post_link); 
     } 
    } 
    return $post_link; 
} 
add_filter('post_type_link', 'videos_post_link', 1, 3); 

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

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

Большое спасибо заранее.

ответ

1

Просто замените свой раздел 'rewrite' => array('slug' => 'categories/%category%') на 'rewrite' => array('slug' => '%category%'), просто оставьте %category% и должны работать.

Важно: В конце концов перейдите по ссылке и переустановите ее.

Некоторой подробной информации вы можете найти здесь Show only specific categories in permalinks for custom post type in WordPress

+0

Спасибо за ответ mattkrupnik. К сожалению, я не могу проверить ваше решение, так как я закончил проект, над которым работал, и у меня больше нет доступа к коду, но я обязательно попробую ваше решение, если и когда я снова столкнусь с этой проблемой. –