为什么POST_TYPE_LINK两次挂接所有内容?

时间:2021-09-09 作者:Dennis

我添加了一个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";
    }     
}
当我启动该函数时,“;“测试”;显示两次。

1 个回复
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 值,而不是输出任何内容。如果您的函数确实产生任何输出,您可能会得到意外的结果,就像您正在经历的那样。

相关推荐

ServerSideRender和Media Object:将图像数据对象传递给php呈现器的属性,即使它未设置

编辑:简单地说,我遇到的问题是,在js端保存为属性的图像数据对象(js中的imgDataObj)正在传递到PHP端,即使我没有在serversiderender组件中传递它,也没有在PHP渲染回调中侦听它。我有一个自定义脚本,可以创建具有自定义大小的图像集。我正试着把它放到一个街区里。ServerSideRender似乎是一条出路。我用它制作了一些块,但从来没有一块有图像。因此,用户可以从媒体库上传/拾取图像,并为每个断点设置自定义大小。块将图像的大小和ID号发送到PHP端。我们不需要整个图像对象。例如,