无法获取所有帖子附件

时间:2018-03-25 作者:Shiva Acharjee

我想从帖子中检索所有图像附件,并将其渲染到图库中。有些人认为返回的附件数量只有一个,即使帖子包含多个图像附件也很难。奇怪的是,一些被返回的附件甚至没有出现在帖子中。下面是我用来获取附件的函数

function get_attchments($num=1){
  $output = \'\';
  if (has_post_thumbnail() && $num == 1){
      $output = wp_get_attachment_url(get_post_thumbnail_id(get_the_ID()));
    }else {
      $attachments = get_posts(array(
          \'post_type\' => \'attachment\',
          \'posts_per_page\' => $num,
          \'exclude\'     => get_post_thumbnail_id(),
          \'post_parent\' => get_the_ID(),
      ));

  if ($attachments && $num == 1){
          foreach ($attachments as $attachment){
              $output = wp_get_attachment_url($attachment->ID);
            }
  }else if($attachments && $num > 1){       
          $output = $attachments;
  }
  wp_reset_postdata();
}
 return $output;
}
我调用函数如下

while(have_posts()){
                    the_post();
                    $def_class=\'twigs\';
                    set_query_var(\'lighter_def_post_class\', \'twigs\');
                    get_template_part(\'template-parts/content\', get_post_format() );
                  }
这是contenet gallery的代码。php

$attachments = get_attchments(7);          
    foreach( $attachments as $attachment ){
        //I am rendering the images out here
    }
我早就有这个问题了。非常感谢。

1 个回复
SO网友:admcfajn

我认为,如果您使用:$wpdb

global $wpdb;
$table_name = \'posts\'; // change this to your post-table name, it may be something different.
$values = $wpdb->get_results( "SELECT * FROM $table_name where post_type = attachment");
foreach ($values as $value){
  print_r($value);
}
如果看到意外值,则需要找出意外值是否有任何不同。

我的意思是,这些意外值是否来自已删除的帖子?或已移至垃圾箱但未完全移除的附件?也许可以四处看看,看看是否可以找到意外的附件,看看是否可以删除它们。

要进一步解决此问题,最好知道在调用此函数的位置之外的$wp\\u查询中发生了什么。使用global $wp_query; var_dump($wp_query); exit; 我可以告诉你更多。

结束

相关推荐

在Get_the_Posts_Pagination函数中编辑分页文本

我想在链接模板中编辑screen\\u reader\\u文本。php我可以在一个主题中这样做,这样它就不会在更新时被覆盖。看起来过滤器是最好的选择,但我找不到关于使用什么过滤器的文档。这是我想从链接模板更改的代码。php: if ( $GLOBALS[\'wp_query\']->max_num_pages > 1 ) { $args = wp_parse_args( $args, array( \'mid_size\' =&