Wordpress,WP超级缓存:如果存在cookie,则显示或隐藏元素

时间:2014-11-28 15:07:22

标签: php ajax wordpress caching cookies

首先,我为我糟糕的英语道歉。我希望你能纠正我。 ^ _ ^

如果没有cookie“cookie_srp”,我有一个必须显示的表单。我用了这段代码:

if(!isset($_COOKIE['cookie_srp'])){
echo 'form code';
}  

要创建cookie,请使用此js代码:

function srp_cookie() {
  var date = new Date();
  date.setTime(date.getTime()+(srp_optime));
  var expires = "; expires="+date.toGMTString();
  document.cookie = 'cookie_srp=set;'+expires+"; path=/";
  document.getElementById('srp_slider').style.display = 'none';
}

如果禁用插件“wp super cache”,一切正常。 相反,如果启用了插件“wp super cache”,除了第一个访问者之外,每个人都可以看到可视化。

我找到了这些解决方案,但不知道如何应用它们,我不太清楚ajax语言。

http://omninoggin.com/wordpress-posts/make-any-plugin-work-with-wp-super-cache/ http://z9.io/2008/11/01/make-your-wordpress-plugin-talk-ajax/

1 个答案:

答案 0 :(得分:1)

解决了,这是一个有效的方法。

<?php
/*
Plugin Name: Hello World
Plugin URI: #
Description: A simple hello world plugin
Version: 0.1
Author: #
Author URI: #
*/

function omni_ts_and_ref() {
  echo time();
  echo '<br/>';
  echo $_POST['omni_ref'];
}

function omni_request_handler() {
  if ( isset($_POST['srp_action']) && $_POST['srp_action'] == 'srp_value' ) {
    omni_ts_and_ref();
    exit();
  }
}
add_action('init', 'omni_request_handler');

function omni_display() {
  echo '
    <div id="omni_div"></div>
    <script>
    jQuery(document).ready(function($){
     //document.cookie = "TR_LNG=something";
      if (document.cookie.indexOf("TR_LNG=") >= 0) {
            var co_test = "yes";
      }else{ 
            var co_test = "no"; 
      }
      $.ajax({
        type : "POST",
        url : "index.php",
        data : { srp_action : "srp_value", omni_ref : co_test },
        success : function(response){
          // the server has finished executing PHP and has returned something, so display it!
          $("#omni_div").html(response);
        }
      });
    });
    </script>
  ';
}
add_action('wp_footer', 'omni_display');
?>

在函数omni_ts_and_ref(){你可以把不会被缓存的php代码。