wp-postviews,wp-supercache冲突
很多时候博客为了加速访问会安装wp-supercache来解决访问速度问题,但糟糕的是大部分人在使用的时候发现wp-postviews使用失效了,然后网上搜索了一大堆无效的代码文章,并且并不能正确的解决该问题。自己查看了调用代码,找到了具体原因:
本质上wp-postviews已经解决了wp-supercache的冲突,但是很多主题作者为了解决多次调用jquery,或者jquery加速问题会自己另外加载jquery,并且主题里增加:
wp_deregister_script("jquery");
从而做到不加载wordpress自带jquery:
<script type='text/javascript' src='http://www.lewafan.com/wp-includes/js/jquery/jquery.js?ver=1.10.2'></script> <script type='text/javascript' src='http://www.lewafan.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=1.2.1'></script>
解决此类冲突:
//修改:plugins/wp-postviews/wp-postviews.php 847行 wp_enqueue_script('wp-postviews-cache', plugins_url('postviews-cache.js', __FILE__), array('jquery'), '1.64',true); //修改为: wp_enqueue_script('wp-postviews-cache', plugins_url('postviews-cache.js', __FILE__), false, '1.64',true);
wp_enqueue_script wordpress使用介绍
wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer ) 参数 $handle (字符串)(必需)脚本名称。小写字符串。 默认值:None $src (字符串)(可选)WordPress根目录下的脚本路径 示例:"/wp-includes/js/scriptaculous/scriptaculous.js"。该参数只在WordPress不了解脚本情况时使用。 默认值:None $deps (数组)(可选)脚本所依靠的句柄组成的数组;加载该脚本前需要加载的其它脚本。若没有依赖关系,返回false。该参数只在WordPress不了解脚本情况时使用。 默认值:array() $ver (字符串)(可选)指明脚本版本号的字符串(若存在版本号)。默认为false。该参数可确保即使在启用缓存的状态下,发送给客户端的仍然是正确版本,因此如果版本号可用且对脚本有意义,包含该版本号。 默认值:false $in_footer (布尔型)(可选)通常情况下脚本会被放置在区块中。如果该函数为true,脚本则会出现在区块的最下方。要求主题在适当的位置中包含有wp_footer()钩子。(WordPress新功能) 默认值:false
wp_enqueue_script使用demo:
add_action('wp_enqueue_scripts', 'wp_postview_cache_count_enqueue'); function wp_postview_cache_count_enqueue() { wp_enqueue_script('wp-postviews-cache', plugins_url('postviews-cache.js', __FILE__), false, '1.64',true); wp_localize_script('wp-postviews-cache', 'viewsCacheL10n', array('admin_ajax_url' => admin_url('admin-ajax.php', (is_ssl() ? 'https' : 'http')), 'post_id' => intval($post->ID))); }
相关资料:
http://codex.wordpress.org/Function_Reference/wp_enqueue_script
http://www.wordpress.la/codex-%E5%B8%B8%E7%94%A8%E5%87%BD%E6%95%B0-wp_enqueue_script().html