2016-09-23 4 views
2

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

register_post_type(
     array(
      'labels'   => // array of labels, 
      'public'   => true, 
      'publicly_queryable'=> true, 
      'show_ui'   => false, 
      'map_meta_cap'  => true, 
      'show_in_menu'  => false, 
      'query_var'   => true, 
      'rewrite'   => array('slug' => 'movie'), 
      'capability_type' => 'post', 
      'has_archive'  => false, 
      'exclude_from_search' => true, 
      'supports'   => array('title'), 
     ) 
); 

Вопрос заключается в том, что URL-адрес станет для этой должности, как:

http://yourdomain.com/movie/post_slug/ 

Но, нужно нравятся:

http://yourdomain.com/post_slug/ 

есть ли способ, чтобы удалить сообщение типа пробковый «фильма» из URL, как посты и страницы отображаются на фронтальном б y default?

Благодаря

+0

Я уже пробовал использовать другой параметр в '' rewrite '=> array (' slug '=>' movie ') 'like: replace' movie 'от false, Null, пустая строка и т. Д., И это не работает. –

ответ

2

Я не думаю, что прямо вперед решение этого. Если вам это нужно так плохо, вы можете использовать Custom Rewrite For Post Slug

+0

Мне нравится, если есть прямой путь, потому что я думаю, что это может быть конфликт с сообщениями или страницами. –

+0

У меня есть поиск слишком много, но я думаю, что это единственный способ сделать это, спасибо. –

1

Вы пробовали:

'with_front' => bool Если структура Permalink предваряться переднего основания. (например: если ваша структура permalink/blog /, то ваши ссылки будут: false ->/news /, true ->/blog/news /). По умолчанию истинные

https://codex.wordpress.org/Function_Reference/register_post_type

+0

Я пробовал '' rewrite '=> массив (' slug '=>' movie ',' with_front '=> false) '. но тот же результат не работает, он автоматически добавляет «кино» слизню впереди. Я также перехожу к настройкам-> permalinks и сохраняет изменения. –

1

Вы должны зарегистрировать свой фильм типа сообщения в init.

register_post_type('movie', $args); 

Для замены фильма с почтового перевода используйте приведенный ниже код.

function remove_my_post_type($post_link, $post, $leavename) { 

    if ($post->post_type != 'movie' || $post->post_status != 'publish') { 
     return $post_link; 
    } 

    $post_link = str_replace('/' . $post->post_type . '/', '/', $post_link); 
    return $post_link; 
} 

add_filter('post_type_link', 'remove_my_post_type', 10, 3); 

После этого вы можете установить тип сообщения типа post, как сообщение или страницу по умолчанию.

function set_my_post($query) { 

    if(isset($query->query['post_type'])){ 
     return; 
    } 

    if (!empty($query->query['name'])) { 
     $query->set('post_type', array('post', 'movie', 'page')); 
    } 
} 

add_action('pre_get_posts', 'set_my_post'); 
+0

Я уже пробовал, он работает, но проблема в том, что это неправильный путь. потому что слизня типа «Фильм» конфликтует с «страницами» и «сообщениями». –

0

Это просто: установить 'rewrite'-> true в вашем args array.