我想更改the_permalink()
函数的输出等。所以,我不想改变所有帖子类型的mermalink结构,只有' post'帖子类型,只有单页。
我已经改变了重写规则,以便
mysite.com/news/2016/the-news-title
将驱动用户访问单个帖子页面模板并正确显示内容。精细。
现在,正如我所说,我希望the_permalink()
函数生成具有该结构的链接。
我怎么能这样做?
答案 0 :(得分:0)
我没有找到合适的解决方案,但您可以在此处为post
WP_Post对象的帖子类型$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);
答案 1 :(得分:0)
好的遵循Noman的指示,我可以发布自己的答案。如果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_type_link
的输出),则可以对get_post_permalink()
过滤器执行相同的操作。在这种情况下,回调将接收4个参数:$ post_link,$ post,$ leavename,$ sample。