Php WooCommerce:在javascript代码中获取post id并通过ajax传递

Php WooCommerce:在javascript代码中获取post id并通过ajax传递,php,jquery,ajax,wordpress,woocommerce,Php,Jquery,Ajax,Wordpress,Woocommerce,我需要帮助了解如何从产品页面获取产品id,以及如何在vimeo视频结束后打开模型框的函数。 在这个模型框中,我需要一个带有产品id的变量,这样我就可以自动获得产品的价格,并将id插入到一个短代码中 希望有人能帮上忙,请随意询问,如果您需要更多信息,我会尽力帮助您 我已经尝试了我能找到的最常见的想法 global $product; $id = $product->get_id(); 或 或 我已经尝试了我能找到的所有变体 如果我使用第一个,我的功能甚至无法工作 如果我使用其他2,它只给我

我需要帮助了解如何从产品页面获取产品id,以及如何在vimeo视频结束后打开模型框的函数。 在这个模型框中,我需要一个带有产品id的变量,这样我就可以自动获得产品的价格,并将id插入到一个短代码中

希望有人能帮上忙,请随意询问,如果您需要更多信息,我会尽力帮助您

我已经尝试了我能找到的最常见的想法

global $product;
$id = $product->get_id();

我已经尝试了我能找到的所有变体

如果我使用第一个,我的功能甚至无法工作

如果我使用其他2,它只给我一个0作为值

// The javascript to call the function when video ends.
var iframe = document.querySelector("iframe");
var player = new Vimeo.Player(iframe);

    player.on("ended", function() {
      jQuery(document).ready(function($) {
    var data = {
        action: 'runThisPhpFunction',
    };

    jQuery.post(ajaxurl, data, function(popupfunction) {
        $("#popup-box").html(popupfunction);
    });
  });
});
接下来是我的函数

//调用Javascript视频vimeo脚本到函数
函数add_my_scripts(){
全球$产品;
$deps=array('jquery');
$in_footer=true;
wp_register_script('myjavascript',get_stylesheet_directory_uri()。/js/myjavascript.js',array(),'1.0.0',true);
wp_enqueue_脚本('myjavascript',get_stylesheet_directory_uri()。/js/myjavascript.js');
}
添加操作(“wp\u排队脚本”、“添加我的脚本”);
添加_过滤器('widget_text','do_shortcode');
添加操作('wp_ajax_runThisPhpFunction','runThisPhpFunction');
添加操作('wp_ajax_nopriv_runThisPhpFunction','runThisPhpFunction');
全球$wpdb;
全球$wp;
//我需要从当前产品页自动获取ID的函数
函数runThisPhpFunction(){
全球$产品;
$product=wc_get_product();
$siteid=$product->ID;
//echo“console.log($product);”;
echo'document.getElementById(“弹出框”).classList.remove(“隐藏”);
回声';
回音“Undskyld.Vi stoppeded videoen!”;
回声';
回声';

echo$siteid,'Men vi venter lige her,klar til at fortsætte når du har hentet Dankortet当您使用javascript/jQuery/Ajax,并且需要在javascript代码中获取产品ID(即Post ID)以通过Ajax将其传递给PHP时,请尝试以下重新访问的代码:

add_action('wp_footer','custom_vimeo_player_script');
函数自定义_vimeo_播放器_脚本(){
//不在购物车、结帐和我的帐户页面中
如果(!(is_checkout()| | is_cart()| | is_account_page()):
?>
jQuery(函数($){
如果(wc类型添加到购物车参数==='undefined')
返回false;
var iframe=document.querySelector(“iframe”),
player=新的Vimeo.player(iframe);
player.on('end',function(){
$.ajax({
键入:“POST”,
url:wc_add_to_cart_params.ajax_url,
数据:{
“操作”:“启用vimeo弹出框”,
“身份证”:,
},
成功:功能(结果){
//如果弹出框中隐藏了类
if($(“#弹出框”).hasClass('hidden')&&result){
//删除隐藏的类并添加html输出
$(“#弹出框”).removeClass('hidden').html(结果);
}
控制台日志(结果);
},
});
});
});

我可能遗漏了一些东西,但我没有看到在进行Ajax调用的JavaScript代码中设置/传递任何ID。这是因为我不知道该怎么做:)这不会在注释中正确格式化,但这就是我使用jQuery使用Ajax调用PHP的方法
var request=$.Ajax({url:'http://yoururl.example.com/runThisPhpFunction.php,数据:{look4:request.term},数据类型:“text”,缓存:false})
。在你的例子中,我的示例中的
look4
id
,值需要与你的HTML字段名匹配。你不能直接调用PHP函数,你需要调用PHP脚本并返回一个值。那是怎么回事,dave,这让我有点困惑,我应该将它粘贴到functions.PHP或我的JS文件中:)这非常有效!-现在我还有一个问题:)我如何将它放在我的短代码echo do_短代码(“[product price=“$post_id”]”中;因为我把它放在这里,它选择了错误的产品。@FizzelTV你能在最后添加你的问题作为编辑吗,你的实际短码代码…谢谢你…一旦完成,请在这里通知我。我自己弄明白了,我放错了短码,忘了做$post_id:)旁边的“…”-过去几天你一直是我的救世主:D
global $product;
$id = $product->id;
// The javascript to call the function when video ends.
var iframe = document.querySelector("iframe");
var player = new Vimeo.Player(iframe);

    player.on("ended", function() {
      jQuery(document).ready(function($) {
    var data = {
        action: 'runThisPhpFunction',
    };

    jQuery.post(ajaxurl, data, function(popupfunction) {
        $("#popup-box").html(popupfunction);
    });
  });
});