我添加了一个Wordpress挂钩:
add_filter(\'post_type_link\', \'custom_post_type_link_venue\', 11, 3);
钩子里的东西都印了两次。我已经把它简化到最低限度了。
function custom_post_type_link_venue ($urlsub2, $post) {
if ($post->post_type == \'product\') {
echo "test";
}
}
当我启动该函数时,“;“测试”;显示两次。
SO网友:Jacob Peattie
将筛选器添加到时post_type_link
, 您正在告诉WordPress对get_post_permalink()
作用因此,无论何时该函数运行,您的函数也会运行。
当我自己测试过滤器时,我只看到每个链接的一条打印消息,但如果您有以下内容:
if ( get_permalink() ) {
the_permalink();
}
然后,您将看到打印两次的消息。这是因为
get_permalink()
呼叫
get_post_permalink()
内部,也是如此
the_permalink()
. 你的
custom_post_type_link_venue()
函数将每次运行。
自从post_type_link
是一个筛选器,而不是一个操作,它应该return
值,而不是输出任何内容。如果您的函数确实产生任何输出,您可能会得到意外的结果,就像您正在经历的那样。