在发布时更新POST_VIEWS_COUNT

时间:2014-11-26 作者:location

在发布帖子时,我希望帖子浏览量计数是829到1013之间的一个随机整数。

你能告诉我需要向函数中添加什么代码吗。php为了实现这一点?

非常感谢。

1 个回复
最合适的回答,由SO网友:Robert hue 整理而成

这就是我之前发布的代码。

// Create custom field on post publish
function wpse_custom_field_on_publish( $new, $old, $post ) {

  if ( $new == \'publish\' && $old != \'publish\' && !get_post_meta( $post->ID, \'post_views_count\', true ) ) {
    add_post_meta( $post->ID, \'post_views\', rand(829, 1013), true );
  }

}
add_action( \'transition_post_status\', \'wpse_custom_field_on_publish\', 10, 3 );
让我解释一下这段代码的实际功能。发布或安排帖子时,此函数将在发布时检查名为post_views_count 在你的岗位上。如果不存在,则会创建post_views_count 自定义字段并在829和1013之间添加一个随机值。

我想您对这段代码有一些问题,有时会失败,所以您更改了add_post_meta 具有update_post_meta 有时也会失败,因为如果一个帖子还没有post_views_count 元字段,然后它将跳过并不做任何操作。

因此,您需要做的是为每种情况添加不同的任务,如果此字段已经存在,该怎么办,否则如果不存在,该怎么办。

// Create custom field on post publish
function wpse_custom_field_on_publish( $new, $old, $post ) {

  if ( ( $new == \'publish\' || $new == \'pending\' ) && $old != \'publish\' ) {

      if ( !get_post_meta( $post->ID, \'post_views_count\', true ) ) {
          add_post_meta( $post->ID, \'post_views_count\', rand(829, 1013), true );
      } else {
          update_post_meta( $post->ID, \'post_views_count\', rand(829, 1013) );
      }

  }

}
add_action( \'transition_post_status\', \'wpse_custom_field_on_publish\', 10, 3 );
这里的想法还是一样的。但我们为现有字段添加了额外的任务。

现在行动有一些限制transition_post_status 它只检查post状态的更改。如果您每天/每周/等不断更改职位状态,则此功能也将不断更改post_views_count 价值

若要防止此函数执行此操作,您可以创建另一个元/自定义字段,并将其值设置为1,前提是过去至少发布过一次帖子。并在执行上述代码之前检查此新字段值。

我也会检查其他答案,看看这是否是更好的解决方案。

结束

相关推荐

WP_POST_LIST_TABLE::GET_VIEWS-是否有过滤器的帖子计数帐户?

朝向编辑的顶部。php屏幕有一个列表,显示post状态以及post计数。我相信这是由WP\\u Post\\u List\\u Table::get\\u views生成的。例如All (7) | Published (6) | Draft (1)不幸的是,这些post计数不符合过滤器。我正在使用pre_get_posts 排除某些帖子。尽管用户只能看到四篇帖子,但这些数字仍然反映了帖子总数。我想看看All (4) | Published (3) | Draft (1) 我似乎找不到覆盖这些数字的操作/过