【发布时间】:2019-02-26 08:39:12
【问题描述】:
我编写了一个基于访问者位置生成链接的代码,它运行良好,但我发现生成的代码会被缓存,因为我使用的是整页缓存,所以我想解决这个问题,我可以使用 ajax 来加载该链接。我使用下面的代码完美地获取了我需要的一些变量,例如位置变量和链接域变量等。但是我无法获取 WooCommerce 自定义字段数据,甚至无法获取产品 ID,它只是返回空白。
我正在使用此代码来获取自定义字段,该字段在直接用于函数时可以完美运行,但无法在 ajax 中使用
$uk_asin = get_post_meta(get_post()->ID, "wccaf_uk_asin", true );
我在functions.php中使用了该代码
add_action( 'woocommerce_before_add_to_cart_button', 'affiliate_link_ajax', 11);
function affiliate_link_ajax() {
?>
<script>
jQuery(document).ready(function(){
jQuery.ajax({
url: "<?php echo admin_url('admin-ajax.php'); ?>",
type: 'POST',
data: {
action: 'getmyfunctionform1'
},
dataType: 'html',
success: function(response) {
jQuery("#myResultsform1").html(response);
}
});
});
</script>
<!-- end Ajax call to getmyfunctionform1 smc 11-22-2013 -->
<div id="myResultsform1"></div>
<?php
}
还有 funnctions.php 中的这段代码
// Ajax Function to Load PHP Function myfunctionform1 smc 11/22/2013
add_action('wp_ajax_getmyfunctionform1', 'myfunctionform1');
add_action('wp_ajax_nopriv_getmyfunctionform1', 'myfunctionform1');
function myfunctionform1() {
$uk_asin = get_post_meta(get_post()->ID, "wccaf_uk_asin", true );
echo $uk_asin;
// Whatever php and or html you want outputed by the ajax call in template file
die(); } // important must use
// end Ajax Function to Load PHP Function myfunctionform1 smc 11/22/2013
如果答案很简单,我将不胜感激,因为我对编码还是很陌生
【问题讨论】:
-
所以你在
myfunctionform1()中使用了这一行$uk_asin = get_post_meta(get_post()->ID, "wccaf_uk_asin", true );并且它没有返回任何值? -
@Michael 是的,当然,当我尝试在 ajax 中请求不返回值的产品 id 时,但是,如果我定义了一个变量,如 $var1 = 'Hello World!';回声 $var1;它使用上面的代码在 ajax 中返回值
-
我不认为:
get_post()->ID将在您的 AJAX 回调中起作用。您必须将 ID 或 post 对象传递给函数,否则它使用全局$post,我假设在您的 AJAX 调用期间不会出现。 developer.wordpress.org/reference/functions/get_post -
@Michael 你能告诉我如何将 id 或那个自定义字段值传递给这个函数,很抱歉我对编码很陌生。
-
在下面查看我的答案。
标签: javascript php jquery ajax wordpress