将逗号添加到While循环wpQuery输出

时间:2017-02-16 作者:thomaswtran

<?php

$args = array(
    \'post_type\' => \'product\',  
    \'post_status\' => \'publish\',
    \'meta_key\' => \'views\',
    \'orderby\' => \'meta_value_num\',
    \'order\'=> \'DESC\', // sort descending
);

// Custom query.
$query = new WP_Query( $args );

// Check that we have query results.
if ( $query->have_posts() ) {
    // Start looping over the query results.
    while ( $query->have_posts() ) {

        $query->the_post();

        printf( \'<a href="%s" class="link">%s</a>\', get_permalink(), get_the_title());

    }

}

// Restore original post data.
wp_reset_postdata();

?>
这是我第一次使用wpquery。

两个问题

如何在每个项目中添加逗号,但最后一个项目除外

2 个回复
最合适的回答,由SO网友:David Lee 整理而成

尝试以下操作:

<?php

$args = array(
    \'post_type\' => \'product\',  
    \'post_status\' => \'publish\',
    \'meta_key\' => \'views\',
    \'orderby\' => \'meta_value_num\',
    \'order\'=> \'DESC\', // sort descending
);

// Custom query.
$query = new WP_Query( $args );

// Check that we have query results.
if ( $query->have_posts() ) {
    // Start looping over the query results.
    while ( $query->have_posts() ) {

        $query->the_post();

        $comma_char = ($query->current_post + 1) < ($query->post_count) ? "," : "";//add comma if not last post
        printf(\'<a href="%s" class="link">%s</a>\' . $comma_char, get_permalink(), get_the_title());

    }

}

// Restore original post data.
wp_reset_postdata();

?>
至于第二个问题(顺便说一句,这是帖子的第一个问题),看起来像是一个标准的WordPress查询,如果不知道它的细节,很难说它可以如何改进。

SO网友:fuxia

您真的不需要每次请求标题或永久链接时都设置一个全局post对象。最好是寻找不涉及全局的解决方案。:)

对于看起来像“苹果、香蕉和桔子”的列表,您可以使用wp_sprintf_l(). 它对最后一项使用本地化的特殊分隔符。在英语中,这是一个Oxford comma 加上一个和一个。

下面是我应该怎么做的。

if ( $query->have_posts() ) {

    $links = array_map(
        function( \\WP_Post $post ) {
            return sprintf(
                \'<a href="%s" class="link">%s</a>\',
                get_permalink( $post ),
                get_the_title( $post )
            );
        },
        $query->posts
    );

    print wp_sprintf_l( \'%l\', $links );
}

相关推荐

Increase offset while looping

我正在编写一个自定义帖子插件,它将自定义帖子分组显示为选项卡。每组4个岗位。是否可以编写一个偏移量随每次循环而增加的查询?因此,结果将是:-第一个查询显示从1到4的帖子-第二个查询显示从5到8的帖子-第三个查询显示从9到12的帖子等。 <div class=\"official-matters-tabs\"> <?php $args = array(\'post_type\' => \'official-matters\', \'showp