#Вордпресс. Как сохранить те же значения мета-ключа в массиве, что и $postid => $metavalue в базе данных

скриншот ошибкиI создал собственный метабокс с 3 полями author, date и price.

Но когда значение хранится в базе данных, мета-ключ author, date и price хранится отдельно для разных сообщений. Я хочу хранить все сообщения, имеющие один и тот же мета-ключ в одном поле, как $postid в качестве ключа и его метазначения в виде значения в массиве.

Вот мой код:

/**
 * Register meta boxes.
 */
function hcf_register_meta_boxes() {
    add_meta_box( 'hcf-1', __( 'Hello Custom Field', 'hcf' ), 'hcf_display_callback', 'post' );
}
add_action( 'add_meta_boxes', 'hcf_register_meta_boxes' );

/**
 * Meta box display callback.
 *
 * @param WP_Post $post Current post object.
 */
function hcf_display_callback( $post ) { ?>
     <!-- echo "Hello Custom Field"; -->
<div class = "hcf_box">
    <style scoped>
        .hcf_box{
            display: grid;
            grid-template-columns: max-content 1fr;
            grid-row-gap: 10px;
            grid-column-gap: 20px;
        }
        .hcf_field{
            display: contents;
        }
    </style>
    <p class = "meta-options hcf_field">
    	
        <label for = "hcf_author">Author</label>

        <input id = "hcf_author"
            type = "text"
            name = "hcf_author"
            value = "<?php echo esc_attr( get_post_meta( get_the_ID(), 'hcf_author', true ) ); ?>">
    </p>
    <p class = "meta-options hcf_field">
        <label for = "hcf_published_date">Published Date</label>
        <input id = "hcf_published_date"
            type = "date"
            name = "hcf_published_date"
           value = "<?php echo esc_attr( get_post_meta( get_the_ID(), 'hcf_published_date', true ) ); ?>">
    </p>
    <p class = "meta-options hcf_field">
        <label for = "hcf_price">Price</label>
        <input id = "hcf_price"
            type = "number"
            name = "hcf_price"
            value = "<?php echo esc_attr( get_post_meta( get_the_ID(), 'hcf_price', true ) ); ?>">
    </p>
</div>
<?php }
/**
 * Save meta box content.
 *
 * @param int $post_id Post ID
 */
function hcf_save_meta_box( $post_id ) {
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
    if ( $parent_id = wp_is_post_revision( $post_id ) ) {
        $post_id = $parent_id;
    }

    $fields = [
        'hcf_author'
        'hcf_published_date',
        'hcf_price',
    ];
    foreach ( $fields as $field ) {
        if ( array_key_exists( $field, $_POST ) ) {
            update_post_meta( $post_id, $field, sanitize_text_field( $_POST[$field] ) );
        }
     }
}
add_action( 'save_post', 'hcf_save_meta_box' );

Как вы хотите, чтобы ваш массив выглядел?

designtocode 18.03.2019 12:10

Я хочу, чтобы мой автор всех постов был в мета-ключе hcf_author, вся опубликованная дата в мета-ключе hcf_published date и все цены поста в мета-ключе hcf_price. Я просто не хочу, чтобы мета-ключ повторялся в мета-таблице постов. быть автором и его ключом идентификатора сообщения и значением. Каждое поле сообщений должно храниться в одном массиве, а не в разных идентификаторах сообщений с одним и тем же мета-ключом. Надеюсь, я смогу вас понять.

roller jackson 18.03.2019 13:27
Как убрать количество товаров в категории WooCommerce
Как убрать количество товаров в категории WooCommerce
По умолчанию WooCommerce показывает количество товаров рядом с категорией, как показано ниже.
0
2
160
0

Другие вопросы по теме