#wordpress #woocommerce #wordpress-shortcode
Вопрос:
Я думаю, что это не сложная проблема, но я не могу найти правильного решения.
Мне нужно динамически обновлять или добавлять (если еще не присутствует) мета — поле, полученное из пользовательского типа записи, в тип записи продукта. Все это должно быть упаковано в короткий код, чтобы его можно было легко ввести в виджет Elementor.
Ниже приведены некоторые моменты, чтобы дать вам небольшой контекст для лучшего понимания:
- CTP хранит данные о каждом отдельном событии загрузки продукта;
- CTP custom_meta_key содержит идентификатор загруженного продукта;
- Каждый раз, когда выполняется событие загрузки, добавляется новый CTP;
- Мне нужно получить последнюю дату создания CTP (функционально эта информация равна дате последней загрузки).;
Короче говоря, я могу добавить post_meta в соответствующий продукт и показать его в интерфейсе, но проблема в том, что эта новая post_meta не обновляется при новом событии загрузки (поэтому новый CTP, содержащий идентификатор продукта, добавляется в базу данных, а затем извлекается с помощью следующего запроса).
function get_last_downloaded_time() {
global $product;
$product_id = $product->get_id();
// WP_Query arguments
$args = array (
'post_type' => array( 'custom_post_typr' ),
'post_status' => array( 'publish' ),
'orderby' => array( 'modified'),
'order' => array( 'ASC' ),
'meta_query' => array(
array(
'key' => 'custom_meta_key',
'value' => $product_id,
),
),
);
$my_query = new WP_Query( $args );
if( $my_query->have_posts() ){
$last_my_query = $my_query->posts[0]->post_modified;
add_post_meta( $product_id, 'last_download', $last_my_query, $unique = false );
update_post_meta( $product_id, 'last_download', $last_my_query, $unique = false );
}
return $last_download;
wp_reset_postdata();
}
add_shortcode( 'single_last_download', 'get_last_downloaded_time');
Я надеюсь, что вопрос достаточно ясен.
Заранее спасибо вам, ребята!