WordPress将自定义键和值添加到wp_query响应

问题描述 投票:0回答:2

我可以使用此查询获取所有帖子。我想做的是添加自定义字段键和值,以便我可以将其与post对象一起传递。

$args = array(
            'p' => 996,
            'status' => 'publish',
            'post_type' => 'ajde_events',
            'tax_query' => array(
                array(
                    'taxonomy' => 'event_type',
                    'field'    => 'slug',
                    'terms'    => 'cursed-warriors',
                ),
            ),
        );

        $singlePost = new WP_Query($args);


        while ($singlePost->have_posts()) : $singlePost->the_post();

        endwhile;

如果我查询此$ singlePost->帖子,我将得到以下结果

0: [,…]
0: {ID: 996, post_author: "1", post_date: "2019-11-13 11:15:09", post_date_gmt: "2019-11-13 11:15:09",…}
ID: 996
comment_count: "0"
comment_status: "open"
filter: "raw"
.....etc
I want to add something here

我想知道如何在其中添加一些键,例如

project_name:“某项目”

php wordpress
2个回答
0
投票

自定义字段可用于此。

如果您使用的是古腾堡(Gutenberg),则可以在帖子编辑器中的帖子选项下找到它们。单击右上角的三个点,选择选项,打开自定义字段,然后单击重新加载页面按钮。备份后,您将在编辑器底部看到自定义字段元框。

如果您使用的是经典格式,则自定义字段切换将在屏幕选项下。

看来您对如何从那里处理数据有很好的了解。您可以将get_post_meta与postID和添加的键一起使用,或者像上面所做的那样打印所有post meta。


0
投票

我了解的是,您想在CPT中创建一个字段,然后希望在wp循环中传递其值。

首先注册一个metabox

这里您可以这样做

    /**
     * Register meta boxes.
     */
    function nap_register_meta_boxes() {
        add_meta_box('nap-1', __('NAP Details', 'nap'), 'nap_display_callback', 'nap_location');
        add_meta_box('featured-nap-1', __('Featured NAP Location', 'featured-nap'), 'featured_nap_display_callback', 'nap_location');
    }
    add_action('add_meta_boxes', 'nap_register_meta_boxes');
    /**
     * Meta box display callback.
     *
     * @param WP_Post $post Current post object.
     */
    function nap_display_callback($post) {


include plugin_dir_path(__FILE__) . '/nap-address-form-fields.php';
}

然后在nap-address-form-fields.php中向其添加字段

<div class="nap_box">

    <p class="meta-options nap_field">
        <label for="project_name">Project Name</label>
        <input id="project_name" value="<?php echo esc_attr(get_post_meta(get_the_ID(), 'project_name', true)); ?>" type="text" name="project_name">
    </p>
</div>

然后是您问题的主要答案,这是将其传递给查询的方法

$args = array(
            'p' => 996,
            'status' => 'publish',
            'post_type' => 'ajde_events',
             'meta_key' => 'project_name',
             'meta_value' => 'some project',
            'tax_query' => array(
                array(
                    'taxonomy' => 'event_type',
                    'field'    => 'slug',
                    'terms'    => 'cursed-warriors',
                ),
            ),
        );
© www.soinside.com 2019 - 2024. All rights reserved.