替换单一自定义POST类型中的Yoast og:图像

时间:2018-09-10 作者:user2093301

我正在尝试替换特定帖子类型中的自定义yoast og:image,以使用自定义元字段而不是特色图片。到目前为止,我得到的是:

function my_wpseo_opengraph() {
global $post;
if (is_singular(\'job_listing\')) {
    $og_image = get_post_meta($post->ID, \'pp_job_header_bg\', TRUE); 
    if ( ! empty ( $og_image ) ) {

        $GLOBALS[\'wpseo_og\']->image($og_image);
    }

}
}
add_action(\'wpseo_opengraph\', \'my_wpseo_opengraph\', 29);
但是,在查看源代码时,代码似乎不会替换默认的og:image,而是添加了第二个og:image。

如何更换?

1 个回复
SO网友:Mark Kaplun

发生这种情况是因为add_action 不要覆盖previos操作,只需“添加”到它们。您很可能需要搜索插件的代码,以找到它是如何钩住自己的代码的og:image 输出如果它不是硬编码的,但使用相同的操作,则只需调用remove_action 使用与寄存器相同的参数。

问题是,您必须在执行流中的某个点执行此操作,该点是在插件运行之前。IIRC下面的代码应该可以做到这一点(但我个人不喜欢这样做,因为本质上你是在修改列表的同时对其进行迭代,这不是最可靠的想法,即使它有效)

add_action(\'wpseo_opengraph\', function () { remove_action(\'wpseo_opengraph\'...) }, 0);

结束