function gp_remove_cpt_slug( $post_link, $post ) {
if ( \'race\' === $post->post_type && \'publish\' === $post->post_status ) {
$post_link = str_replace( \'/\' . $post->post_type . \'/\', \'/\', $post_link );
}
return $post_link;
}
add_filter( \'post_type_link\', \'gp_remove_cpt_slug\', 10, 2 );
此时,尝试查看链接将导致404(找不到页面)错误。这是因为WordPress只知道帖子和页面可以有类似于域的URL。com/post名称/或域。com/页面名称/。我们需要告诉它,我们的自定义帖子类型的帖子也可以有类似域的URL。com/cpt post name/。
<?php
/**
* Have WordPress match postname to any of our public post types (post, page, race).
* All of our public post types can have /post-name/ as the slug, so they need to be unique across all posts.
* By default, WordPress only accounts for posts and pages where the slug is /post-name/.
*
* @param $query The current query.
*/
function gp_add_cpt_post_names_to_main_query( $query ) {
// Bail if this is not the main query.
if ( ! $query->is_main_query() ) {
return;
}
// Bail if this query doesn\'t match our very specific rewrite rule.
if ( ! isset( $query->query[\'page\'] ) || 2 !== count( $query->query ) ) {
return;
}
// Bail if we\'re not querying based on the post name.
if ( empty( $query->query[\'name\'] ) ) {
return;
}
// Add CPT to the list of post types WP will include when it queries based on the post name.
$query->set( \'post_type\', array( \'post\', \'page\', \'race\' ) );
}
add_action( \'pre_get_posts\', \'gp_add_cpt_post_names_to_main_query\' );
就是这样!只需将这些代码示例中的两个race实例都更改为自定义post类型的slug,并用您想要的任何函数前缀替换gp\\u1(您的首字母缩写就可以了),您应该已经全部设置好了。可能还需要转到“设置”>“永久链接”,并将永久链接结构保存到/%postname%/中。