按图库顺序获取页面的附件

时间:2013-09-16 作者:Larry B

在该页面中创建了页面和图库后,我希望按照创建图库时设置的顺序检索该图库中的所有图像,即在添加媒体弹出窗口中拖动图像的顺序。

我需要在PHP中检索所有图像URL及其标题等到一个数组中。

我一直在使用下面的代码,但它并不能解释它们在库中设置的顺序。

function get_page_attached_images($page_id) {

$output;
$output_row;

$thumb_ID = get_post_thumbnail_id( $page_id );

if ( $images = get_posts(array(
  \'post_parent\' => $page_id,
  \'post_type\' => \'attachment\',
  \'numberposts\' => -1,
  \'orderby\'        => \'menu_order\',
  \'order\'           => \'ASC\',
  \'post_mime_type\' => \'image\',
  \'exclude\' => $thumb_ID,
)))

  foreach ( $images as $img ) {

    $output_row[\'url\'] = $img->guid;
    $output_row[\'title\'] = $img->post_title;
    $output_row[\'caption\'] = $img->post_excerpt;
    //$output_row[\'img\'] = $img;

    $output[] = $output_row;

  }

return $output;
}

有人知道在检索这些附件时如何保持库顺序吗?

我正在使用Wordpress v3。61

1 个回复
SO网友:s_ha_dum

库“顺序”保存在库短代码本身中。使用“文本”编辑器查看库的代码,然后拖动图像,再次查看原始代码。要做到这一点,您必须解析gallery短代码的帖子内容并提取其数据。类似这样:

function extract_gallery_wpse_114337($post) {

  $regex = get_shortcode_regex();

  preg_match_all(\'/\'.$regex.\'/\',$post->post_content,$matches);

  if (!empty($matches[2])) {
    foreach ($matches[2] as $k => $v) {
      if (\'gallery\' == $v) {
        $attr = shortcode_parse_atts($matches[3][$k]);
        break;
      }
    }  
  }

  if (!empty($attr[\'ids\'])) {
    $atts = new WP_Query(
      array(
        \'post_type\' => \'attachment\',
        \'post_status\' => \'inherit\',
        \'post__in\' => explode(\',\',$attr[\'ids\']),
        \'orderby\' => \'post__in\'
      )
    );
    var_dump($atts);
  }
}

结束

相关推荐

jquery issue in functions.php

我正在处理的主题中有一个问题,我不知道如何解决它。该主题有几个jquery脚本,需要加载到头部才能工作。如果没有所有这些,主题就失败了。这是我打电话给的人jquery-1.8.2。最小jsjquery-1.6.1。min.jsjquery。放松。1.3。jsjquery-ui-1.8.11。风俗min.jsjquery-ui-1.8.21。风俗最小js现在使用WordPress,我想您可以将jquery排队,然后加载所有版本。我的问题是,当我尝试这样做并删除上面的脚本时,一切都失败了。我将所有脚本放入函数