wpdb and acf via wp rest api

时间:2015-05-07 作者:Jacksonkr

我使用wp rest api 对于

/wp-json/dn/locations

依次执行以下操作wpdb 查询

$sql = "SELECT * 
FROM wp_posts p
WHERE p.post_type = \'location\'
AND p.ID = 133;";
$results = $wpdb->get_results($sql);
结果很好,但不幸的是,我的ACF字段没有显示在那里。在我正在做的几个查询中,有相当多的查询,如果我必须手动追踪每个领域,这将很快变成一团混乱。有没有一种更简单的方法来获取附加了所有ACF字段的帖子?

2 个回复
SO网友:Jacksonkr

最后,我在自定义表中使用了$wpdb,并使用wp\\u查询了带有ACF字段的自定义帖子

    $q = new WP_Query(array(
        \'post_type\' => \'coupon\',
        \'post__in\'  => $cids
    ));

    $coupons = array();
    while($q->have_posts()) : $q->the_post();
        $p = get_post();
        $f = get_fields();
        $m = array_merge((array)$p, (array)$f);
        array_push($coupons, $m);
    endwhile;
饼干就是这样破碎的。

SO网友:Ihor Vorotnov

function wpse187543_register_acf() {

    $post_types = get_post_types( arrray( \'public\' => true ), \'names\' );

    foreach ( $post_types as $type ) {

        register_api_field( $type, \'acf\', array(
            \'get_callback\'    => \'wpse187543_get_acf\',
            \'update_callback\' => null,
            \'schema\'          => null,
        ));

    }

}
add_action( \'rest_api_init\', \'wpse187543_register_acf\' );

function wpse187543_get_acf( $object, $field_name, $request ) {
    return get_fields( $object[\'id\'] );
}
这将在所有公共post类型的rest api输出中附加一个名为“acf”的键。当然,您可以自定义帖子类型列表。此外,还有一些插件可以处理这项工作。

结束

相关推荐

为什么即使查询输出是正确的,$wpdb->show_error()和print_error()也会显示输出?

要解决以下问题,请参阅https://wordpress.stackexchange.com/questions/178995/sanitize-a-working-query-string-by-using-wpdb-prepare-fails-with-mysql-db-er 我遇到了一个相当奇怪的行为。即使我使用的查询是正确的,并且显示了正确的输出。global $wpdb; $wpdb->show_errors(); $pageposts = $wpdb->get_r

wpdb and acf via wp rest api - 小码农CODE - 行之有效找到问题解决它

wpdb and acf via wp rest api

时间:2015-05-07 作者:Jacksonkr

我使用wp rest api 对于

/wp-json/dn/locations

依次执行以下操作wpdb 查询

$sql = "SELECT * 
FROM wp_posts p
WHERE p.post_type = \'location\'
AND p.ID = 133;";
$results = $wpdb->get_results($sql);
结果很好,但不幸的是,我的ACF字段没有显示在那里。在我正在做的几个查询中,有相当多的查询,如果我必须手动追踪每个领域,这将很快变成一团混乱。有没有一种更简单的方法来获取附加了所有ACF字段的帖子?

2 个回复
SO网友:Jacksonkr

最后,我在自定义表中使用了$wpdb,并使用wp\\u查询了带有ACF字段的自定义帖子

    $q = new WP_Query(array(
        \'post_type\' => \'coupon\',
        \'post__in\'  => $cids
    ));

    $coupons = array();
    while($q->have_posts()) : $q->the_post();
        $p = get_post();
        $f = get_fields();
        $m = array_merge((array)$p, (array)$f);
        array_push($coupons, $m);
    endwhile;
饼干就是这样破碎的。

SO网友:Ihor Vorotnov

function wpse187543_register_acf() {

    $post_types = get_post_types( arrray( \'public\' => true ), \'names\' );

    foreach ( $post_types as $type ) {

        register_api_field( $type, \'acf\', array(
            \'get_callback\'    => \'wpse187543_get_acf\',
            \'update_callback\' => null,
            \'schema\'          => null,
        ));

    }

}
add_action( \'rest_api_init\', \'wpse187543_register_acf\' );

function wpse187543_get_acf( $object, $field_name, $request ) {
    return get_fields( $object[\'id\'] );
}
这将在所有公共post类型的rest api输出中附加一个名为“acf”的键。当然,您可以自定义帖子类型列表。此外,还有一些插件可以处理这项工作。