WordPress图片发布和图库发布问题

时间:2016-06-14 22:20:48

标签: wordpress

我正在尝试在WordPress中添加图片发布格式。如果用户没有上传特色图片但是在正文中添加图像,我想从附件中抓取第一张图像并将其显示为顶部标题图像,其余部分显示在文章正文中。这是我想出的功能。如果上传了特色图像,则可以工作,但如果没有,则会抓取一个甚至不在帖子正文中的图像。看起来它没有获得帖子的ID。我做错了什么?请帮忙。这是我的代码:

function justblog_get_attachment(){
if(has_post_thumbnail()) {
    the_post_thumbnail('large', array('class' => 'blog-main-image'));
} else {
    // No post thumbnail, try attachments instead.
    $attachments = get_children(array( 'post_parent' => $post->ID,
                                      'post_type' => 'attachment',
                                      'post_mime_type' => 'image',
                                      'order' => 'DESC',
                                      'orderby' => 'menu_order ID'));

    foreach($attachments as $att_id => $attachment) {
        $full_img_url = wp_get_attachment_image_src($attachment->ID, 'full', true);
    }
    if ($attachments) {
        echo '<img src="' . esc_url($full_img_url[0]) . '" alt="Title Image" class="blog-main-image" />';
    }
}
wp_reset_postdata();
}

1 个答案:

答案 0 :(得分:0)

你需要使用全局填充$ post或将$ post作为参数传递给函数,前者如下所示

function justblog_get_attachment(){
    if(has_post_thumbnail()) {
        the_post_thumbnail('large', array('class' => 'blog-main-image'));
    } else {
        // No post thumbnail, try attachments instead.
        global $post;
        $attachments = get_children(array( 'post_parent' => $post->ID,
                                          'post_type' => 'attachment',
                                          'post_mime_type' => 'image',
                                          'order' => 'DESC',
                                          'orderby' => 'menu_order ID'));

        foreach($attachments as $att_id => $attachment) {
            $full_img_url = wp_get_attachment_image_src($attachment->ID, 'full', true);
        }
        if ($attachments) {
            echo '<img src="' . esc_url($full_img_url[0]) . '" alt="Title Image" class="blog-main-image" />';
        }
    }
    wp_reset_postdata();
}

你可以尝试使用css和一点点php。基本上,您修改了标题代码,以便为您的正文或页面周围的div包装器添加一个额外的类。

if ( has_post_thumbnail($post->ID) ){?>

    <div class="post-body no-feat-img">

<?php } else { ?>
    <div class="post-body">
<?php }

然后使用此类,您可以定位帖子内容中的第一个图像,使img绝对并将其对齐到顶部。

在此处查看示例https://jsfiddle.net/1pveo2wn/1/ - 图片下方有一个按钮可切换课程。这不是理想的,而是一种方法。另一种是在输出之前过滤帖子内容,拉动图像并显示为特色图像。

我不能使用过滤方法的代码的一个原因是,我花了最近两天的时间绕过srcset和wordpress the_post_thumbnail()来输出适合常见容器大小的不同大小对于每种常见的屏幕类型(移动到宽屏)。因此,我认为你应该放弃这一点,只使用特色图像,如果用户未能选择特色图像,那就很难了。