add_post_meta для всех пользовательских сообщений, которые еще не имеют метакей - PullRequest
0 голосов
/ 21 февраля 2020

Для пользовательского поста типа "bedrijf" я создал возможность, где посетители могут оставлять оценки. Если это так, мета-ключ и значение добавляются и сохраняются. Если их больше одного, вычисляется среднее значение и поле значения обновляется.

Однако большинство пользовательских сообщений еще не имеют мета-ключа и значения, и я хочу, чтобы они имели одно со значением "0 ".

Код, который я получил до сих пор:

function create_metadata(){
    $args = array(
        'post_type' => 'bedrijf',
        'posts_per_page'   => -1,
    );
    $posts = get_posts($args);
    foreach ( $posts as $post ) {
        $av = get_post_meta($post->ID, 'averagerating', true);
        if (!isset($av)){
        add_post_meta( $post->ID, 'averagerating', '0' );
    }
    }
}
add_action('init','create_metadata');

Но пока это не сработало.

1 Ответ

0 голосов
/ 21 февраля 2020

Я обнаружил проблему, мне пришлось использовать «новый запрос» следующим образом:

function create_metadata(){
        $query = new WP_Query(array(
        'post_type' => 'bedrijf',
        'posts_per_page' => -1,
        ));
    while ($query->have_posts()) {
        $query->the_post(); 
    if(!null == get_post_meta( get_the_ID(), 'averagerating', true )){
        add_post_meta( get_the_ID(), 'averagerating', '0' );
    }
}
...