插件在AJAX调用中不起作用

时间:2014-08-19 作者:Clark Jeria

我正在进行进度条购物体验(在我的WooCommerce网站上)。首先,用户选择计划(demo、home、business、premium),然后选择他想要的产品,最后我要向他们展示cart表。我使用以下代码使用AJAX发送项目(在同一模板中):

<?php
    if(isset($_POST[\'action\'])) 
    {
      global $woocommerce;
      $woocommerce->cart->empty_cart(true);                 
      $woocommerce->cart->add_to_cart( 2932, 30 );

      echo do_shortcode(\'[woocommerce_cart]\');
      die();
    }
?>
<?php get_header(); ?>  
<script type="text/javascript">
  var serializedOrderForm =\'action=update_cart_order\';                       

          jQuery.ajax({
              type: \'POST\',
              data: serializedOrderForm
          })
          .done(function(data){
              console.log(data);
              jQuery("#p1content3").html(data);
          })
          .fail(function( jqXHR, textStatus, errorThrown ) {
              console.log(jqXHR);
              console.log(textStatus);
              console.log(errorThrown);
              jQuery("#p1content3").html("<div class=\'alert\'>Ha Ocurrido un Error al Procesar la Orden</div>");
          });
</script>

<div id="p1content3"></div>
<?php echo do_shortcode(\'[woocommerce_cart]\');?>

<?php get_footer(); ?>
<?php get_sidebar(); ?>
我的问题是,返回AJAX的表(第一个表)没有插件“woocommerce动态定价折扣”的价格折扣。

但如果在我使用的任何模板中:

  <? echo do_shortcode(\'[woocommerce_cart]\'); ?>
它返回带有价格折扣的表(第二个表)。。。

您可以在此处看到示例:http://cl.galyleo.net/prueba-carro/ 代码的2个案例。

有什么想法吗?

1 个回复
SO网友:kaiser

WordPress中的所有AJAX调用都通过admin运行。如果你把东西包起来

if ( ! is_admin() )
{
    // stuff
}
那么AJAX调用将无法了解这一部分。换句话说,它不会被执行。我不知道这个插件具体做了什么,但如果只有一个部分没有执行,这很可能就是问题所在。

结束

相关推荐

How can I find plugins' slug?

我想知道如何才能找到插件的slug(slug=WordPress用来更新插件和确定哪些插件当前处于活动状态的内部名称)?它通常是插件的文件夹名,但如果插件没有文件夹,则是其文件名(如hello.php)。是否有其他例外情况?大小写字符重要吗</插件的slug是否可以与其文件夹名不同?如果有一个叫做hello的插件呢。php和另一个/您好。php/您好。php