WP — Динамическое добавление или обновление мета — поля записи, упакованного в короткий код

#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');
 

Я надеюсь, что вопрос достаточно ясен.
Заранее спасибо вам, ребята!