限制从图库中显示的图像数量

时间:2013-02-22 作者:Devin Crossman

我不确定我是否这样做了。。我想显示4个随机图像作为页面标题的一部分。我创建了一个名为Header Images的帖子,里面是一个包含大量图片的图库。然后在我的标题内。php我有

$args = array(
    \'name\'=>\'header-images\',
    \'numberposts\' => 4,  
    \'orderby\' => \'rand\'
);
query_posts($args);
if (have_posts()) : 
    while (have_posts()) : the_post();?>
        <div id="headerImages">
            <?php the_content(); ?>
        </div>
    <?php endwhile;
endif;
wp_reset_query();
这会随机排列顺序并显示图像,但不会像我希望的那样将它们限制为4个。有人能解释一下我需要做什么吗?谢谢

1 个回复
最合适的回答,由SO网友:birgire 整理而成

尝试以下操作:

$args = array(
    \'name\'=>\'header-images\',
    \'posts_per_page\' => 4,  
    \'orderby\' => \'rand\'
);
即使用posts_per_page 而不是numberposts 如果要使用query_posts() 根据Codex页面:

http://codex.wordpress.org/Function_Reference/query_posts

Edit:

以下是一个想法-使用给定的slug从页面内容中获取库短代码ID:

/*
* Get an array of the gallery shortcode ids from a page content with a given slug 
* @param string $slug Post slug.  
* @param string $type Post type.  
* @return array Array of the exploded ids parameter.
*/
function get_gallery_ids_wpse_87978($slug,$type){
        $output=array();
        $my_query = new WP_Query(array(\'name\'=>$slug,\'post_type\'=>$type));
        while ($my_query->have_posts()) : $my_query->the_post(); 
            $content=get_the_content();
            preg_match(\'/ids=\\"([0-9,]+)\\"/i\', $content, $matches);
            if(isset($matches[1])){
                $output = explode(",",$matches[1]); // let\'s take the last set of ids
            }           
        endwhile;
        return $output;
}       
用法示例:

假设我们有一页有鼻涕虫my-gallery-demo 内容中有这样一个短代码:

[gallery ids="1376,1375,341,213,211,210,209,208,206,205"]
要显示4 随机的thumb 通过此短代码中的图像,我们执行以下操作:

// initial values:
$slug=\'my-gallery-demo\'; // EDIT post/page slug that contains the gallery shortcode 
$type=\'page\'; // EDIT post type (post,page,...) 
$size=\'thumb\'; // EDIT image size (thumb,large,full,...)
$n=4; // EDIT number of random images to show

// fetch all ids from the gallery shortcode:
$ids=get_gallery_ids_wpse_87978($slug,$type);

// get n random keys from the $ids array:
$random_ids=array_rand($ids,$n);

// display a list of n random images:
echo \'<ul>\';
foreach($random_ids as $random_id){
      echo \'<li>\';
      echo wp_get_attachment_image( $ids[$random_id], $size );
      echo \'</li>\';
 }
echo \'</ul>\';

结束

相关推荐

Upload images - Theme options

我正在使用这个很棒的[图坦卡门+教程][1]创建主题选项页面。这对我来说很好,因为我需要通过css更改div的背景图像。它可以很好地与一个图像,但我不知道如何使它与2个图像?如果你能告诉我我做错了什么,那将是一个巨大的帮助?谢谢 <?php function wptuts_get_default_options() { $options = array(); $options[] = array(\'logo\' => \'\');