在 wordpress 中插入 og:image

Insert og:image in wordpress

我有以下 facebook 的 og:image 标签挂钩。

在我的模板文件中:

<?php do_action('wp_head', $mypost) ?>

在我的函数文件中:

add_action('wp_head', 'add_fb_og');
function add_fb_og($mypost) {
  if (isset($mypost["wpcf-bgleft"][0])) {
    echo '<meta property="og:image" content="'.$mypost["wpcf-bgleft"][0].'" />';
  }
}

我想做的是将自定义字段的背景图像传递给 wp_head,以便它输出 <meta property="og:image" content="http://example.com/mybackgroundimage.jpg" /> 供 facebook 使用。

虽然有输出,但 facebook 没有选择 og:image 标签。
我在使用它的调试工具时收到警告:

The 'og:image' property should be explicitly provided, even if a value can be inferred from other tags.

我可以在源代码视图中看到 og:image 标记,所以我认为头部在到达模板文件中的 do_action 之前已经被处理。

那我如何根据自定义字段插入 og:image

如果需要的话,我也在使用 WordPress SEO by Yoast 插件。

yoast 的 Wordpress SEO 也使用 facebook opengraphs。所以它可能会干扰尝试禁用它。但如果您可以查看正确放置的标签并在正确的位置。那么问题可能出在另一端。

好的,我知道怎么做了。

  1. 不要在模板部分调用 do_action('wp_head')

  2. 在 functions.php 中,执​​行:

    add_action('wpseo_head', 'add_fb_og');
    function add_fb_og($mypost) {
      global $post;
    
      $mypost = get_post_custom($offid);
      if (isset($mypost["wpcf-bgleft"][0])) {
        echo '<meta property="og:image" content="'.$mypost["wpcf-bgleft"][0].'" />';
      }
    }
    

注意我正在使用 Yoast SEO 的钩子并调用 global $post 来获取 post 数据,所以我不必传递任何参数。