2016-09-23 149 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中移除後型彈頭「電影」,如文章和網頁在前端b顯示y默認?

感謝

+0

我已經嘗試了'rewrite'=> array('slug'=>'movie')類似的不同參數:用'false',Null,空字符串等代替'movie',它不起作用。 –

回答

2

我不認爲有直接的解決方案這一點。如果你需要這個如此糟糕,你可以使用Custom Rewrite For Post Slug

+0

我喜歡,如果有直線的方式,因爲我認爲它可能與帖子或頁面slu conflict衝突。 –

+0

我有太多的搜索,但我認爲這是唯一的方法,謝謝。 –

1

你試過:

'with_front' => bool應的固定鏈接結構與 前方基地前綴。 (例如:如果你的permalink結構是/ blog /,那麼你的鏈接將是:false - >/news /,true - >/blog/news /)。默認爲 真正

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

+0

我已經嘗試過''rewrite'=> array('slug'=>'movie','with_front'=> false)'。但相同的結果不起作用,它會自動在前面添加'電影'slu g。我也去設置 - >永久鏈接並保存更改。 –

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); 

之後,你可以設置你的文章類型的說明就像一個默認的帖子或頁面。

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

我已經試過了,它的工作原理也是問題是,這是不對的。因爲帖子類型「電影」的slu conflict與「頁面」和「帖子」slu conflict衝突。 –

0

很簡單:在你的args array設置'rewrite'-> true