在WordPress页面上动态插入og:image

时间:2016-04-27 15:01:03

标签: wordpress facebook-opengraph

我正在使用以下功能,并且在我确定具有精选图像集的页面上使用FB的调试器:

function fb_opengraph() {
    global $post;

    if(is_page()) {

        if(has_post_thumbnail($post->ID)) {
            $img_src = wp_get_attachment_image_src(get_post_thumbnail_id( $post->ID ), 'medium');
        } else {
            $img_src = get_stylesheet_directory_uri() . '/img/opengraph_image.jpg';
        }
        if($excerpt = $post->post_excerpt) {
            $excerpt = strip_tags($post->post_excerpt);
            $excerpt = str_replace("", "'", $excerpt);
        } else {
            $excerpt = get_bloginfo('description');
        }
        ?>

    <meta property="og:title" content="<?php echo the_title(); ?>"/>
    <meta property="og:description" content="<?php the_content(); ?>"/>
    <meta property="og:type" content="article"/>
    <meta property="og:url" content="<?php echo the_permalink(); ?>"/>
    <meta property="og:site_name" content="<?php echo get_bloginfo(); ?>"/>
    <meta property="og:image" content="<?php echo $img_src; ?>"/>

<?php
    } else {
        return;
    }
}
add_action('wp_head', 'fb_opengraph', 5);

目前正在发生的事情是$ img_src将返回值“Array”,而不是该页面的特色图像的URL。我不确定这个“数组”值是从哪里来的,但更重要的是我试图在没有运气的情况下提取特色图片网址。

有什么想法吗?谢谢!

2 个答案:

答案 0 :(得分:1)

https://developer.wordpress.org/reference/functions/wp_get_attachment_image_src/

这应该给你一个数组

while((cut = buffer.find("\r\n")) == -1)
        {
            struct timeval tv;
            tv.tv_sec = 5;
            setsockopt(cli_socket, SOL_SOCKET, SO_RCVTIMEO,(struct timeval *)&tv,sizeof(struct timeval));
            recv(cli_socket, tmpBuffer, 100, 0);
            buffer += tmpBuffer;
            memset(tmpBuffer, 0, 100);
        }

获取需要获取相应数组元素的URL

wp_get_attachment_image_src(get_post_thumbnail_id( $post->ID ), 'medium');

试一试

答案 1 :(得分:1)

wp_get_attachment_image_src(get_post_thumbnail_id( $post->ID ), 'medium');

它将返回一个数组。该数组的第一个元素将包含图像URL。

因此,您需要以这种方式提及该数组的第一个索引:$img_src[0]

完整行将是:

<meta property="og:image" content="<?php echo $img_src[0]; ?>"/>