【问题标题】:How to choose between this 3 options for og:image如何在 og:image 的这 3 个选项之间进行选择
【发布时间】:2017-01-06 02:58:49
【问题描述】:

我尝试编写如下代码:

  1. 如果帖子没有缩略图,则选择默认图片。
  2. 如果没有 ACF 图像,则选择默认缩略图
  3. 如果有 ACF 图像,则使用它。

这是我的 og:facebook 的图像。

function insert_image_src_rel_in_head()
{
    global $post;
    if (!is_singular())
        return;
    if (!has_post_thumbnail($post->ID))
    {
        $default_image = "http://madmax.quebec/neufsvies/wp-content/uploads/2016/09/madmax.quebec_qaygerxdm814v-750x374.jpg";
        echo '<meta property="og:image" content="' . $default_image . '"/>';
    }
    elseif (!empty($temp_acfImage))
    {
        $temp_acfImage = wp_get_attachment_image_src(get_field('image_og'), 'facebook-thumbnail');
        echo '<meta property="og:image" content="' . esc_attr($temp_acfImage[0]) . '"/>';
    }
    else
    {
        $thumbnail_src = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'facebook-thumbnail');
        echo '<meta property="og:image" content="' . esc_attr($thumbnail_src[0]) . '"/>';
    }
    echo "";
}

add_action('wp_head', 'insert_image_src_rel_in_head', 1);

【问题讨论】:

    标签: wordpress facebook facebook-opengraph advanced-custom-fields


    【解决方案1】:

    试试这个代码:

    <?php
    function insert_image_src_rel_in_head()
    {
        global $post;
        $img_src = '';
        $default_image = "http://madmax.quebec/neufsvies/wp-content/uploads/2016/09/madmax.quebec_qaygerxdm814v-750x374.jpg"; //default image src
        if (!is_singular())
            return;
        $acfImage = get_field('image_og', $post->ID);
        //if post has ACF 'image_og'
        if (!empty($acfImage))
        {
            $img_src = wp_get_attachment_image_src($acfImage, 'facebook-thumbnail');
        }
        //if post does't has ACF 'image_og' but has thumbnail
        else if (has_post_thumbnail($post->ID))
        {
            $img_src = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'facebook-thumbnail')[0];
        }
        //if post does't has thumbnail and also does't has ACF 'image_og' then set a default image
        else
        {
            $img_src = $default_image;
        }
    
        ?>
        <meta property="og:image" content="<?php echo $img_src; ?>"/>
        <?php
    }
    add_action('wp_head', 'insert_image_src_rel_in_head', 5);
    ?>
    

    wp_get_attachment_url 返回上传附件的 URI 或 失败时为“假”;而wp_get_attachment_image_src它 返回一个包含四个值的数组:附件图片的 URL src,图像文件的宽度,图像文件的高度,以及 布尔值。而wp_get_attachment_url 只接受$attachment_id 作为参数并且> wp_get_attachment_image_src 接受$attachment_id, $size

    代码未经测试,但应该可以工作。
    希望这会有所帮助!

    【讨论】:

    • 好的,如果我希望 acf 图像是第一个,如果有 acf 图像使用它如果没有 acf 图像使用缩略图,如果没有 acf 图像和缩略图使用默认值
    • 不起作用它似乎只列出缩略图而不是acf图像
    • @MaximeMarquette:我修复了一个拼写错误,现在如果你有 AFC 图像,它会起作用;提供 ACF 密钥为 image_og
    • 可以使用最新版本 但如果我更改 $img_src;到 $img_src[0]; acf 现场工作,但在没有 acf 图像 的帖子上,我在 og 调试中得到了这个,顺便说一句,非常感谢您的时间和耐心,我们已经接近解决方案了。
    • $img_src = wp_get_attachment_url(get_post_thumbnail_id($post-&gt;ID), 'facebook-thumbnail'); to $img_src = wp_get_attachment_image_src(get_post_thumbnail_id($post-&gt;ID), 'facebook-thumbnail'); and &lt;meta property="og:image" content="&lt;?php echo $img_src; ?&gt;"/&gt; by &lt;meta property="og:image" content="&lt;?php echo $img_src[0]; ?&gt;"/&gt; 现在可以正常工作了
    猜你喜欢
    • 1970-01-01
    • 2013-02-23
    • 2013-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多