如何显示特定自定义帖子类型的所有帖子及其自定义字段值?

时间:2016-03-19 作者:Acidon

我正在尝试获取所有帖子的列表post_type “”staff“以及分配给此的自定义字段post_type. 自定义字段是在ACF的帮助下创建的。

我两种都试过了:

$query = new WP_Query( array (
    \'post_type\'      => \'staff\',
    \'post_status\'    => \'publish\',
    \'posts_per_page\' => - 1,
) );

$staff = $query->get_posts();
以及

$args  = array (
    \'post_type\'      => \'staff\',
    \'post_status\'    => \'publish\',
    \'posts_per_page\' => - 1,
);

$staff = get_posts( $args );
它返回帖子列表,但不列出其自定义字段。

获取所有带有相应自定义字段的帖子名称的最佳性能方式是什么?我已经找了好几个小时了,但越来越困惑。。。

1 个回复
SO网友:jgraup

根据我的理解,元信息位于不同的db表中。您需要做的是循环浏览每个帖子,并使用get_fields().

下面是一个查询示例,用于查找特定帖子的所有字段。

$rows = $wpdb->get_results($wpdb->prepare(
    "SELECT option_name, option_value FROM $wpdb->options WHERE option_name LIKE %s OR option_name LIKE %s",
    $post_id . \'_%\' ,
    \'_\' . $post_id . \'_%\' 
), ARRAY_A);

if( !empty($rows) ) {

    foreach( $rows as $row ) {

        $meta[ $row[\'option_name\'] ][] = $row[\'option_value\'];

    }

}
SQL wiz可能能够将两者合并,这将非常好,但在此之前,请坚持get_fields.

相关推荐

如何在wp-Query中比较不同的时间戳以获取事件自定义帖子类型?

我有一个带有自定义元数据库的自定义帖子类型(as seen on wptheming.com) 并且希望进行查询以显示即将发生的事件,例如在侧边栏中,过去的日期被忽略。但我需要一个当前时间的值来和事件开始时间进行比较。现在我从current_time(\'mysql\') 看起来是这样的:2012-02-16 13:15:31元的开始时间如下所示:201108121100如何使这两个日期具有可比性?我可以在查询中执行吗?或者是否有其他解决方案?以下是我到目前为止的查询(值留空,时间戳回显):<?ph