2016-06-14 56 views
-1

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

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(); 
} 

回答

0

你需要使用全局填充$邮寄或通过$柱插入函数作为参数,前者表现出以下

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。基本上你可以修改你的头文件代码,在你的页面上添加一个额外的类到你的body或div wrapper。

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/ - 图像下方有一个按钮用于切换课程。这不是理想的,但它是一种方法。另一种是在输出之前过滤发布内容,拉出图像并显示为特色图像。

我不会为过滤方法执行代码的一个原因是,我花了最近2天来绕过srcset和wordpress the_post_thumbnail()来输出适合每种常见屏幕类型的普通容器大小的不同大小(移动到宽屏)。因此,我认为你应该放弃这一点,只使用特色图像,如果用户未能选择特色图像,他们的强硬。

+0

嗨大卫,我试过你的修复,它返回一个空的数组。我正在调用WP Loop中的函数,所以它应该抓取帖子的ID并从那里加载附件。帖子ID显示正常!我正在调用WP循环内的模板部分。请有任何想法吗? –

+0

你需要仔细检查图像是如何包含在帖子上。这将更有可能发布后,而不是后者的子女。 – David

+0

我实际上是WordPress的新手,仍然在学习。我没有修改WP如何将图像添加到默认帖子(我没有在这里处理自定义帖子)。图像不应该默认是帖子的子女?我正试图解决这个问题三天了。当我回显图像时,它会加载媒体库中的所有图像。出于一些奇怪的原因,'post_parent'设置为'get_the_ID()/ the_ID/$ post-> ID'并不打扰。我在循环内部,它应该从循环中取出帖子ID并加载来自该特定帖子的图像,而不是整个库。请在这里帮助我。快要疯了。 –