/ Сайтостроение / Wordpress / Массовое изменение метаполей

Массовое изменение метаполей

20.08.2017

785

Известная проблема/неудобство wordpress — обновление метаполей, т.е. чтобы обновить метаполе необходимо войти в запись и обновить ее. Массовое редактирование (например поменять статус записей или т.п.) в данном случае не помогает — на метаполя это не оказывает действия. Рассмотрим альтернативные варианты.

Простой перебор массива

Данный метод довольно примитивен, но эффективен (тестировал лично, количество записей 2000 шт, обрабатываются таким образом несколько секунд).

Вот пример обновление метаполя _price с ценой товара woocommerce. При этом задано условие, что если у товара есть цена распродажи (_sale_price) то брать её, а если нет то брать обычную цену (_regular_price).

<?php global $post;

$args = array(
'posts_per_page' => -1,
'post_type' => 'product'
);

$myposts = get_posts( $args );
foreach( $myposts as $post ) : setup_postdata($post); ?>

<?php if(get_post_meta($post->ID, '_sale_price', true)): ?>

<?php $newprice = get_post_meta($post->ID, '_sale_price', true); ?>
<?php update_post_meta($post->ID, '_price', $newprice); ?>

<?php else: ?>

<?php $newprice = get_post_meta($post->ID, '_regular_price', true); ?>
<?php update_post_meta($post->ID, '_price', $newprice); ?>

<?php endif; ?>

<h3><?php echo $post->post_title; ?></h3> //это строка нужна фактически для достоверности: что обновилось

<?php endforeach; ?>
<?php wp_reset_postdata() ?>

При необходимости можно создать (если у записи его не было) или удалить метаполе

add_post_meta($post->ID, 'meta_key', 'meta_value', true);
delete_post_meta($post_id, $key, $value);

Последний параметр add_post_meta — Уникальность:
true — уникальный, false — не уникальный (по умолчанию). Если поставить параметр в true, то при добавлении поля, сначала будет проверяться существует ли уже поле с таким же ключом, если существует, то поле не будет добавлено.

Обновление строк напрямую в базе данных ($wpdb->get_results)

Плагин Custom Field Bulk Editor (4000)

Недавно натолкнулся на данный плагин. В плане обновления, возможно, он и не очень удобен, но в плане добавления некоего метаполя можно попробовать.

Тэги:

Поделится информацией с друзьями

  • Похожие записи
  • Комментарии
  • Вложения
WooCommerce AJAX Products Filter

WooCommerce AJAX Products Filter

Раннее данный фильтр участвовал в общем обзоре, в котором я приводил основные особенности. Рассмотрим подробнее работу с фильтром WooCommerce AJAX Products Filter. Работа с WooCommerce AJAX Products Filter Можно создавать Читать далее »

/
Шаблон вывода категорий woocommerce

Шаблон вывода категорий woocommerce

Зафиксировать шаблон (код) вывода категорий Woocommerce (я его назвал product-cat-list.php). Обычно я вывожу этот шаблон на стандартной странице /shop/ Шаблон вывода категорий <div id="subcategory-archive"> <?php $terms = get_terms( array( 'taxonomy' Читать далее »

Цены в зависимости от группы пользователей

Цены в зависимости от группы пользователей

Попробуем разобраться в вопросе цен для определенных групп пользователей. Либо это должно быть реализовано специальной колонкой цен, либо скидкой на все товары. WC Role Based Price Плагин WC Role Based Читать далее »

/ /

Добавить комментарий

Пока нет комментариев. Будь первым!

Массовое изменение метаполей
Легкая верстка блоков
Рекомендации для васЛегкая верстка блоковOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.