我有一个名为services
使用以下permalinkDOMAIN/services/investing/
(单页永久链接)。
我想把permalink改成DOMAIN/investing/
. 我不想在永久链接中使用POST\\u类型。
我在中更新了永久链接设置WP Dashboad. 但它只更改为博客帖子,而不是自定义帖子类型。
如何自定义自定义帖子类型的永久链接?
POST\\u类型是使用register_post_type
如下所示。
function cp_services() {
register_post_type(\'Services\', array(
\'labels\' => array(
\'name\' => \'Services\',
\'singular_name\' => \'service\',
\'add_new_item\' => \'Add New Service\',
\'edit_item\' => \'Edit Service\',
),
\'description\' => \'Services\',
\'public\' => true,
\'has_archive\' => true,
\'menu_position\' => 20,
\'show_in_menu\' => true,
\'show_in_nav_menus\' => true,
\'supports\' => array(\'title\',\'editor\',\'thumbnail\')
));
}
add_action(\'init\', \'cp_services\');
最合适的回答,由SO网友:Ramesh 整理而成
当@WebElaine对这个问题发表评论时,我尝试了以下对我有用的代码。
首先,从permalink中取出段塞
function na_remove_slug( $post_link, $post, $leavename ) {
if ( \'services\' != $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\', \'na_remove_slug\', 10, 3 );
仅仅去掉鼻涕虫是不够的。现在,您将得到404页,因为WordPress只希望帖子和页面以这种方式运行。您还需要添加以下内容:
function na_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\', \'services\', \'page\' ) );
}
}
add_action( \'pre_get_posts\', \'na_parse_request\' );
然后刷新永久链接。