gpt4 book ai didi

php - 没有自定义帖子类型 slug 的 WordPress slug

转载 作者:可可西里 更新时间:2023-10-31 22:51:47 26 4
gpt4 key购买 nike

我已使用以下代码注册自定义帖子类型:

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 中删除帖子类型 slug“电影”,例如默认情况下在前端显示的帖子和页面?

谢谢

最佳答案

您必须在 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');

关于php - 没有自定义帖子类型 slug 的 WordPress slug,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39655213/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com