【问题标题】:Get custom field values in alphabetical order按字母顺序获取自定义字段值
【发布时间】:2012-09-21 05:11:38
【问题描述】:

下面的函数按照发布的顺序列出了自定义字段的值。示例:

  • 弗兰克·卡普拉
  • 阿尔弗雷德·希区柯克
  • 伍迪艾伦
  • 伍迪艾伦
  • 弗兰克·卡普拉
  • 佩德罗·阿莫多瓦

我想按字母顺序获取此列表,不重复,每个项目都有一个链接<a href="Woody-Allen">Woody Allen</a>。示例:

  • 阿尔弗雷德·希区柯克
  • 弗兰克·卡普拉
  • 佩德罗·阿莫多瓦
  • 伍迪艾伦

这是代码:

<?php
$movie_reviews = get_posts( 'numberposts=-1&orderby=post_name' );
foreach( $movie_reviews as $post ) : setup_postdata( $post );
?>
<span>
<?php $director = get_post_meta( $post->ID, "director", $single = true );
if( $director !== '' ) {
echo $director;
} ?>
</span>
<?php endforeach; ?>

这可能吗?

【问题讨论】:

    标签: wordpress list field


    【解决方案1】:

    使用get_posts,您可以像这样订购带有meta_value 的帖子:

    $movie_reviews = get_posts(array(
      'numberposts'=>-1,
      'order'=>'ASC',
      'orderby'=>'meta_value',
      'meta_key'=>'director'
    ));
    

    要删除重复项,您可以构建一个导向器数组:

    $directors = array();
    foreach( $movie_reviews as $post ) {
        $director = get_post_meta( $post->ID, 'director', true );
    }
    $directors = array_unique($directors);
    

    然后你可以根据需要显示它们:

    foreach ($directors as $director) {
        // display what you want
    }
    

    编辑:只显示一个*导演:

    foreach ($directors as $director) {
        if (strtolower($director[0])=='a') {
            // display what you want
        }
    }
    

    【讨论】:

    • 完美@soju。您只能列出姓名以字母“a”开头的董事吗?
    • 伟大的@soju。非常感谢你。您可以按出现次数对列表进行排序吗?
    猜你喜欢
    • 2012-11-02
    • 1970-01-01
    • 1970-01-01
    • 2013-06-18
    • 2020-09-23
    • 2012-11-08
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多