Задать вопрос
@dimsontm

Как поменять значние произвольного поля в одном месте для все постов сразу?

использую advanced custom fields, создал каталог из произвольных полей, но есть некоторые значения, например срок деййствия акции, которое меняется с одном месте и должно примениться ко всем записям. Вопрос куда это поле выводить в админке,чтобы не приходилось меня значение,заходя в каждый пост.
  • Вопрос задан
  • 78 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Nikelamoc
Такого в стандартном функционале нет, только кодом .
Взять все кастомфилды посттайпа по имени поля можно вот так
function get_meta_values( $key = '', $type = 'post', $status = 'publish' ) {

    global $wpdb;

    if( empty( $key ) )
        return;

    $r = $wpdb->get_col( $wpdb->prepare( "
        SELECT pm.meta_value FROM {$wpdb->postmeta} pm
        LEFT JOIN {$wpdb->posts} p ON p.ID = pm.post_id
        WHERE pm.meta_key = '%s' 
        AND p.post_status = '%s' 
        AND p.post_type = '%s'
    ", $key, $status, $type ) );

    return $r;
}


Ну и потом в цикл и обновляем.
Ответ написан
Комментировать
@dimsontm Автор вопроса
Решил задачу таким образом:

Создал новую рубрику "Акция" (В моем случае мне надо выводить одинаковый срок акции в каждой записи).

Создал два кастомных поля, указав правило вывода - рубрика записи = "Акция"

Далее создал запись в данной рубрике. И в кастомных полях ввел необходимые значения.
В шаблоне 'single' в нужном месте подключил вывод этого поста, указав его категорию
<?php

                global $post;
                $args = array('category' => '11' );
                $myposts = get_posts( $args );
                foreach( $myposts as $post ){ setup_postdata($post);
                    ?>
                    <?php include(TEMPLATEPATH . '/template-parts/discount.php'); ?>
                    <?php
                }

                wp_reset_postdata();
                ?>


Теперь,если надо изменить значение во всех постах, просто меняю значения в одном посту и все))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы