Копировать мета настраиваемое поле публикации в другое настраиваемое поле

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

copy value from custom_field_1 (if exist) or custom_field_2 (if exist) to custom_ field_3

Только одно из field1 или field2 имеет значение, а поле 3 всегда имеет значение e, скопированное из fiel1 или field2.

Все настраиваемые поля находятся в одной мета поста (woo product).

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
651
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Сделать это можно двумя способами:

1) Старый способ из $product_id - идентификатор динамического продукта (или идентификатор заказа):

if ( ( $value = get_post_meta( $product_id, 'custom_field_1', true ) || $value = get_post_meta( $product_id, 'custom_field_2', true ) ) && ! get_post_meta( $product_id, 'custom_field_3', true ) ){
    update_post_meta( $product_id, 'custom_field_3', $value );
}

2) Новый способ(начиная с WooCommerce 3, методы CRUD) из $product, объект WC_Product(или от$order, тоWC_OrderОбъект):

if ( ( $value = $product->get_meta( 'custom_field_1' ) || $value = $product->get_meta( 'custom_field_2') ) && ! $product->get_meta( 'custom_field_3' ) ){
    $product->update_meta_data( 'custom_field_3', $value );
}

Код находится в файле function.php вашей активной дочерней темы (или активной темы). Оба способа работают.

большое спасибо LoicTheAztec. Просто скопирую второй код в functions.php или нужно изменить?

Mani 05.09.2018 18:04

@Mani Вы НЕ МОЖЕТЕ скопировать его прямо в functions.php. Этот код необходимо разместить в подключаемой функции или в шаблоне, так как вам нужно получить динамический идентификатор продукта $ или идентификатор заказа (или динамический объект продукта или заказа ... Если этот ответ отвечает на ваш вопрос, пожалуйста, не забудьте принять ответ, спасибо.

LoicTheAztec 05.09.2018 19:13

Большое спасибо LoicTheAztec. Можете ли вы дать мне полную функциональность для всех продуктов магазина woocommerce? Спасибо

Mani 06.09.2018 16:33

@Mani Это зависит от того, где вы хотите их отображать и как ... Что такое meta_keys? где именно вы хотите отображать значения? в какой структуре html их нужно отображать?

LoicTheAztec 06.09.2018 16:55

@ LoicTheAztec Привет. Каждый заказ имеет мета-поле "delivery_time" ИЛИ "time-to_send". И всегда одно из них имеет ценность. Мне нужна настраиваемая функция, которая определяет, имеет ли поле «time_to_sent_» значение, скопируйте значение в поле «delivery_time» в настраиваемой мета-мете заказа для каждого заказа woocommerce.

Mani 08.09.2018 08:36

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