我正在制作一个插件,计算访问者访问我的网站的次数。我想在每个页面加载时运行插件中的代码一次。我能用什么好的动作钩?
每次页面重新加载时只运行一次插件
基本思想是使用javascript对站点进行AJAX回调,从而保存命中率,因为如果单独使用PHP,则不会计算缓存页面的命中率,因为当时没有处理PHP。
研究WP Postviews插件的代码http://lesterchan.net/portfolio/programming/php/#wp-postviews
Edit:
在Firefox中可能会触发两次钩子,因为它会将HTML源中指定的URL预取为<link rel=\'next\' href=\'http://www.domain.com/adjacent-post/\' />
remove_action(\'wp_head\', \'adjacent_posts_rel_link_wp_head\');
@阿什法梅写得对。关于你的钩子(我们不知道你用的是哪一个-发射两次听起来很奇怪):shutdown
是执行的最后一个挂钩。
我要做的是根本不使用任何挂钩。仅仅因为Wordpress提供了操作和过滤器挂钩,并不意味着您必须使用它们。在页脚中。php文件中,在标记之前添加以下内容。
<?php if ( is_single() ) registerHit(get_the_ID()); ?>
然后在你的函数中。php添加此函数:function registerHit($post_ID)
{
$meta_key = \'post_views_count\';
$count = get_post_meta($post_ID, $meta_key, true);
if( $count == \'\')
{
$count = 0;
delete_post_meta($post_ID, $meta_key);
add_post_meta($post_ID, $meta_key, \'0\');
}
else
{
$count++;
update_post_meta($post_ID, $meta_key, $count);
}
}
有些人会说,这对Wordpress来说太过手动,但我已经使用Wordpress多年了,我基本上在每个项目上都使用它,有时使用直接向上的函数比使用动作或过滤器更容易。