如何从具有自定义分类的帖子中获取精选图片网址?

时间:2016-10-05 17:21:47

标签: php wordpress

我看了一下这篇帖子,并复制了一些有点帮助的代码(页面不再是完全空白的)

我正在尝试抓取两个网址:全尺寸图片的网址和缩略图版本

来自我创建的自定义分类中具有特定“字段”的每个帖子(我创建了分类“艺术类型”,有3个选项:绘图,打印和数字)

这是我到目前为止编写的代码:

        <?php 
        $args = array(
        'post_type' => 'art-piece', /* custom post type */
        'taxonomy' => 'art-type', /* custom taxonomy */
        'field' => 'slug',
        'terms' => array('digital')
        ); 

        $gallery = get_posts ($args);
        ?>


            <div class="zoom-gallery">
                <div class="gallery-item">

                <?php if (has_post_thumbnail( $post->ID ) ): ?>
                <?php $url = wp_get_attachment_url( get_post_thumbnail_id($post->ID), 'thumbnail' ); ?>

                <img src="<?php echo $url ?>" />

                <?php endif; ?>                                  
                </div>
            </div>

从我所看到的循环中没有任何东西使用我指定的任何$ args。理论上,这应该抓住所有特色图像,无论是类型,分类等,但它们根本不会出现在我身上。该页面完全空白

1 个答案:

答案 0 :(得分:0)

在我看来,你没有循环遍历get_posts()调用的结果。尝试更改代码以匹配我在下面发布的更新代码。

它的作用是遍历$gallery变量中存储的每个“帖子”。

抱歉没有足够的时间来提供更深入的解释,但如果这对您有用,我会回过头来详细说明。

<?php 
    $args = array(
        'post_type' => 'art-piece', /* custom post type */
        'tax_query' => array(
            array(
                'taxonomy' => 'art-type', /* custom taxonomy */
                'field' => 'slug',
                'terms' => array('digital')
            ),
        ),
    ); 

    $gallery = get_posts($args); // removed space between function name and opening bracket
    foreach ( $gallery as $post ) : setup_postdata( $post ); // added this loop
    ?>


        <div class="zoom-gallery">
            <div class="gallery-item">

            <?php if (has_post_thumbnail( $post->ID ) ): ?>
            <?php $url = wp_get_attachment_url( get_post_thumbnail_id($post->ID), 'thumbnail' ); ?>

            <img src="<?php echo $url ?>" />

            <?php endif; ?>                                  
            </div>
        </div>
    <?php endforeach; // ending the loop
    wp_reset_postdata(); // reset $post so we don't interfere with the main WP_Query 
    ?>