如何在另一个文件中保留变量`$post`以供使用

时间:2017-09-15 作者:vanloc

我创建了一个快速支付插件。

当用户单击“快速支付”按钮时。显示弹出式调用views/display-popup.php.

在这个文件中,我声明变量$post.

<?php
    global $post;
    $id = $post->ID;
    $name = get_the_title();
?>
好的,它会$id$name 值和显示。

在…上function.php, 我称之为:

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 变量来更新我的数据库。

<?php
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\'); 
function ajax_cart_send_mail(){
    global $post;
    $id = $post->ID;
    $name = get_the_title();
}
?>
但我收到的价值观是$id$name 为空。

更新时间:

我的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");
    });
}

1 个回复
SO网友:Jacob Peattie

$post 不是在管理ajax中设置的。php请求,因为您没有查询任何帖子或循环内的帖子。在发送ajax请求的脚本中,需要发送post ID并在回调中检索post对象:

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

结束

相关推荐

Functions.php中的字符串转换不起作用

我在中使用了以下代码functions.php 要翻译一些文本:add_filter(\'gettext\', \'aad_translate_words_array\'); add_filter(\'ngettext\', \'aad_translate_words_array\'); function aad_translate_words_array( $translated ) { $words = array( // \'word to