如何从wp_Query结果中提取信息?

时间:2015-01-26 作者:benj rei

背景:

我正在使用一个叫做skt全宽的wordpress主题。我正在修改他们的首页幻灯片,以便它显示六个随机图像,而不是六个预先选择的图像。我在媒体中有一个自定义字段,可以选择在头版彩票中可以选择哪些图像。然后有一个查询来选择这些图像。

他们用来显示图像的代码需要设置某些图像属性才能工作。它们是,图像url、图像标题、图像描述和图像href。

问题:

一旦媒体/附件进入查询,我如何从中获取所需的信息?我是否需要使用它们的插入代码,或者它们是实现我想要的更好的方法?

显示图像的代码:

echo \'{image : \\\'\'.$imgUrl.\'\\\', title : \\\'<div class="slide-title"><span>\'.( ($imgHref!=\'\' && $imgTitle!=\'\') ? \'<a href="\'.$imgHref.\'">\' : \'\').$imgTitle.( ($imgHref!=\'\' && $imgTitle!=\'\') ? \'</a>\' : \'\').\'</span></div><div class="slide-description"><span>\'.$imgDesc.\'</span></div>\'.( ($imgHref != \'\') ? \'<div class="slide-description"><span><a href="\'.$imgHref.\'">Read More &rsaquo;</a></span></div>\' : \'\').\'\\\', thumb : \\\'\'.$imgUrl.\'\\\', url : \\\'\\\'},\'."\\n";
我的代码:

$args = array(
   \'post_type\'  => \'attachment\',
   \'meta_key\'   => \'on_front_page\',
   \'meta_value\' => \'1\',
   \'orderby\'    => \'rand\',
   \'posts_per_page\' => 6 ,
   \'max_num_pages\'  => 1,
);

$slides = new WP_Query($args);
$total_images = (int) $slides->found_posts;
while( $slides->have_posts() ) {
    echo \'{image : \\\'\'.$imgUrl.\'\\\', title : \\\'<div class="slide-title"><span>\'.( ($imgHref!=\'\' && $imgTitle!=\'\') ? \'<a href="\'.$imgHref.\'">\' : \'\').$imgTitle.( ($imgHref!=\'\' && $imgTitle!=\'\') ? \'</a>\' : \'\').\'</span></div><div class="slide-description"><span>\'.$imgDesc.\'</span></div>\'.( ($imgHref != \'\') ? \'<div class="slide-description"><span><a href="\'.$imgHref.\'">Read More &rsaquo;</a></span></div>\' : \'\').\'\\\', thumb : \\\'\'.$imgUrl.\'\\\', url : \\\'\\\'},\'."\\n";   
}

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

执行查询后,将开始以下操作:

$slide_list = array();

if ( $slides->have_posts() ) {
    while ( $slides->have_posts() ) {
使用next\\u post抓取下一张幻灯片,无需踩踏全局

        $slide = $slides->next_post();
        $slide_id = $slide->ID;
您的图片标题是您的帖子标题:

        $slide_title = $slide->post_title;
你的href是你的永久链接

        $slide_href = get_permalink( $slide );
您的描述是您的帖子内容或摘录

        $slide_content = $slide->post_content;
        $slide_excerpt = $slide->post_excerpt;
如果需要宽度和高度,可以按如下方式获取:

        $image_data = wp_get_attachment_image_src( $slide_id, \'thumbnail\');
        $image_url = $image_data[0];
        $width = $image_data[1];
        $height = $image_data[2];

        # do something here ...
        $slide_list[] = array(
            \'id\' => $slide_id,
            \'title\' => $slide_title,
            \'href\' => $slide_href,
            \'content\' => $slide_content,
            \'image_w\' => $width,
            \'image_h\' => $height
        );
    }
}
希望这有帮助!

最主要的是循环浏览它们。

如果要查看所有可用数据,请在查找中使用以下内容:

echo "<pre>" . print_r($slide, true) . "</pre>";
这将显示每张幻灯片返回的所有字段。

结束

相关推荐

单类.php和存档中的纯<a>链接--类.php不起作用

这看起来应该非常容易解决,但这让我很困惑。我页面上的所有链接都是通过get_header() 和get_footer() 工作很好。通过添加的链接single-class.php 和archive-class.php 不要工作。看看Google Chrome中的源代码,这些链接看起来很完美,但当我点击它们时,什么都没有发生。以下是两个示例:<a class=\"btn btn-default\" href=\"http://markrummel.com/dev/enzas/classes/culin