如何更改单个 post 永久链接的默认结构生成?
How to change the default structure generation of single post permalinks?
我想更改 the_permalink()
函数的输出等。所以,我不想更改所有 post 类型的 mermalink 结构,只更改 'post' post 类型,并且只更改单个页面。
我已经更改了重写规则,因此
mysite.com/news/2016/the-news-title
会将用户引导至单个 post 页面模板并正确显示内容。美好的。
现在,正如我所说,我希望 the_permalink()
函数生成具有该结构的链接。
我该怎么做?
我没有找到合适的解决方案,但您可以在此处为 post 类型生成永久链接 post
您有 $post
WP_Post 对象..
为什么要使用 get_post()
因为 post_name
(永久链接)保存在该字段中并且它将始终是唯一的。
function edit_the_permalink($permalink) {
$post = get_post(array('post_name' => $permalink));
if( $post->post_type == 'post' ) {
// Override your permalink here for post_type = `post`
echo '<pre>';print_r($post);echo '</pre>';
$permalink = '';
return $permalink;
}
}
add_filter('the_permalink', 'edit_the_permalink', 10, 1);
好的,按照诺曼的指示,我可以 post 我自己的答案。如果 post_type == 'post',我可以过滤并修改输出 'the_permalink'。基本代码:
add_filter('the_permalink', 'edit_the_permalink', 10, 2);
function edit_the_permalink($permalink, $post) {
// you should pass the post object when calling the_permalink()
if(is_object($post) && $post->post_type == 'post'){
// [...do the magic...]
return $permalink;
}
}
请注意 the_permalink()
和 get_permalink()
(别名 get_the_permalink()
)都接受 $post 参数,您应该将其作为 post 对象传递.
此外,请注意,如果您想修改自定义 post 类型的永久链接生成(get_post_permalink()
的输出),您可以使用 post_type_link
过滤器执行几乎相同的操作。在这种情况下,回调将接收 4 个参数:$post_link、$post、$leavename、$sample.
我想更改 the_permalink()
函数的输出等。所以,我不想更改所有 post 类型的 mermalink 结构,只更改 'post' post 类型,并且只更改单个页面。
我已经更改了重写规则,因此
mysite.com/news/2016/the-news-title
会将用户引导至单个 post 页面模板并正确显示内容。美好的。
现在,正如我所说,我希望 the_permalink()
函数生成具有该结构的链接。
我该怎么做?
我没有找到合适的解决方案,但您可以在此处为 post 类型生成永久链接 post
您有 $post
WP_Post 对象..
为什么要使用 get_post()
因为 post_name
(永久链接)保存在该字段中并且它将始终是唯一的。
function edit_the_permalink($permalink) {
$post = get_post(array('post_name' => $permalink));
if( $post->post_type == 'post' ) {
// Override your permalink here for post_type = `post`
echo '<pre>';print_r($post);echo '</pre>';
$permalink = '';
return $permalink;
}
}
add_filter('the_permalink', 'edit_the_permalink', 10, 1);
好的,按照诺曼的指示,我可以 post 我自己的答案。如果 post_type == 'post',我可以过滤并修改输出 'the_permalink'。基本代码:
add_filter('the_permalink', 'edit_the_permalink', 10, 2);
function edit_the_permalink($permalink, $post) {
// you should pass the post object when calling the_permalink()
if(is_object($post) && $post->post_type == 'post'){
// [...do the magic...]
return $permalink;
}
}
请注意 the_permalink()
和 get_permalink()
(别名 get_the_permalink()
)都接受 $post 参数,您应该将其作为 post 对象传递.
此外,请注意,如果您想修改自定义 post 类型的永久链接生成(get_post_permalink()
的输出),您可以使用 post_type_link
过滤器执行几乎相同的操作。在这种情况下,回调将接收 4 个参数:$post_link、$post、$leavename、$sample.