Wordpress如何添加页面计数器

Wordpress how to add a page counter

我正在使用自定义数字字段(由 Jet 引擎插件生成)来跟踪页面的加载次数。

在我的 functions.php 文件中,我正在使用此代码:

$count = get_post_meta("706", 'counter', true );
if(!is_admin() && !current_user_can('administrator')){
$count++;
update_post_meta("706", 'counter', $count );
}

'counter'是字段名。

我正在使用 if(!is_admin) 所以它不会计算我的后端测试。

我的主要问题是计数器不一致,虽然大多数时候它以 1 的步长计数,但有时会跳过并计数 234 在单个页面加载时。

这是 link 我的测试页:

https://oferziv.com/ofer/test/test3/

我在这里错过了什么?

通常,您需要将所有内容包裹在适当的钩子中,如下所示:

// Runs on every page request after we have a valid user.

add_action('init', function () {

    // Return early if we're in the backend...

    if (is_admin()) {

        return;
    }

    // ...or the current user has admin capabilities 

    if (current_user_can('activate_plugins')) {

        return;
    }

    // Otherwise, update counter

    $count = get_post_meta("706", 'counter', true );
    $count++;
    
    update_post_meta("706", 'counter', $count );
});

关于hooks的使用方法见:

要检查用户权限,请参阅:

就像我说的,我总是使用 wp_head 动作钩子,它工作得很好!

function my_counter_function()
{
  if (is_admin() || current_user_can('activate_plugins')) return;

  $counter = get_post_meta("706", 'counter', true);

  if (empty($counter)) {
    $counter = 1;
    update_post_meta("706", 'counter', $counter);
  } else {
    $counter++;
    update_post_meta("706", 'counter', $counter);
  }
}

add_action('wp_head', 'my_counter_function'); // This is the action hook i was talking about!