Как сохранить переменную `$ post` для использования в другом файле

Я создаю плагин для быстрой оплаты.

Когда пользователь нажимает кнопку Quick pay. Он показывает всплывающий вызов views /display-popup.php .

В этом файле я объявляю переменную $ post .

<?php    global $post;    $id = $post->ID;    $name = get_the_title();?>

Хорошо, он получит значения $ id и $ name и покажет.

В function.php я вызываю it:

add_action( 'woocommerce_share', 'fun_add_link_below', 50 );function fun_add_link_below(){    global $post;    if(absint($post->ID) > 0){        require(ROOTDIR . '/views/display-popup.php');    }}

Проблема в том, что

я создаю новый файл с именем ajax-send-email-save-database.php .

Этот файл также должен использовать переменную $ post для обновления моей базы данных.

<?phpadd_action('wp_ajax_ajax_cart_send_mail','ajax_cart_send_mail');add_action('wp_ajax_nopriv_ajax_cart_send_mail','ajax_cart_send_mail'); function ajax_cart_send_mail(){    global $post;    $id = $post->ID;    $name = get_the_title();}?>

Но я получаю значения $ id и $ имя равно нулю.

Обновление:

Мой js-файл ajax:

$('input#submit-order-quick_view').on('click', function(event) {    event.preventDefault();    var content = '';    var data_details = {        'action': 'ajax_cart_send_mail',        'hoten': getdata(frm,'hoten'),        'sdt': getdata(frm,'sdt'),        'email': getdata(frm,'email'),        'diachinhan': getdata(frm,'diachinhan'),        'product_title' : product_title,    }    $.ajax({        url: product_ajax.url,        type: 'POST',        dataType: 'text',        data: data_details,    }).done(function(data) {        console.log(data);    }).fail(function() {        console.log("Error");    });}

Ответы и комментарии:

Я пытался с $ post = get_post ($ _POST ['post_id']); или $ post = get_post ($ _POST ['id']) ;. Но когда я var_dump ($ post). Переменная $ post по-прежнему равна нулю.
Создан 15-09-2017 06:00 vanloc

Вам нужно отправить идентификатор сообщения в запросе ajax, вы не можете вытащить его из эфира.
Создан 15-09-2017 06:04 Jacob Peattie

Я новичок в Wordpress. Вы можете добавить больше кода? Я обновил свой Ajax-файл. Извините, у меня проблема в этом слишком долго.
Создан 15-09-2017 06:07 vanloc

$ post не установлен в запросе admin-ajax.php, потому что вы не запрашиваете ни одного поста или внутри цикла. В вашем скрипте, который отправляет запрос ajax, вам нужно отправить идентификатор сообщения и получить объект сообщения в обратном вызове:
function ajax_cart_send_mail () {
    $ post = get_post ($ _POST ['post_id']);

    $ id = $ post-> ID;
    $ name = $ post-> post_title;
}
add_action ( 'wp_ajax_ajax_cart_send_mail', 'ajax_cart_send_mail');
add_action ( 'wp_ajax_nopriv_ajax_cart_send_mail', 'ajax_cart_send_mail');
Создан 15-09-2017 05:14 Jacob Peattie15k41826