我希望自定义帖子的网址为:website.com/post-name
;
我具有创建自定义帖子类型的功能:
function create_posttype() {
register_post_type( 'credit-cards',
array(
'labels' => array(
'name' => __( 'Credit Cards' ),
'singular_name' => __( 'credit_cards' )
),
'public' => true,
'has_archive' => true,
'rewrite' => array('slug' => 'credit-cards','with_front' => false),
'taxonomies' => array('category', 'post_tag'),
'supports' => array( 'title', 'editor', 'custom-fields', 'excerpt' )
)
);
}
add_action( 'init', 'create_posttype' );
我期望'with_front' => false
会从网址中隐藏credit-cards
。
由于某些原因,这不会影响我的网址。
如何从{中隐藏credit-cards
?
答案 0 :(得分:1)
请使用过滤器(post_type_link
)从URL中删除自定义帖子类型的基本信息。将此代码放入functions.php
文件中。
function remove_base_slug( $post_link, $post, $leavename ) {
if ( 'custom_post_type' != $post->post_type || 'publish' != $post->post_status ) {
return $post_link;
}
$post_link = str_replace( '/' . $post->post_type . '/', '/', $post_link );
return $post_link;
}
add_filter( 'post_type_link', 'remove_base_slug', 10, 3 );
如果收到404错误,则您也应该在functions.php
中使用此脚本。
function check_parse_request( $query ) {
if ( ! $query->is_main_query() || 2 != count( $query->query ) || ! isset( $query->query['page'] ) ) {
return;
}
if ( ! empty( $query->query['name'] ) ) {
$query->set( 'post_type', array( 'post', 'custom_post_type', 'page' ) );
}
}
add_action( 'pre_get_posts', 'check_parse_request' );
注意:custom_post_type
可以是books
,events
,blogs
等