当发布的帖子不起作用时更新用户元

时间:2017-01-16 作者:Dragos Micu

我在抄本之后创建了以下“插件”,但它似乎不起作用。它应该在用户每次发布新的博客帖子时向其meta添加100分。

你能告诉我有什么问题吗。。。

function post_published_add_points( $ID, $post ) {
  $author = $post->post_author; /* Post author ID. */
  add_user_meta( $author, \'Points\', \'100\'); 
}
add_action( \'publish_post\', \'post_published_add_points\', 10, 2 );
谢谢!德拉戈斯

3 个回复
SO网友:CK MacLeod

上面的函数看起来不错,我测试它只是为了确定。可能是因为你不喜欢你得到的东西。

它使用键向特定作者添加用户元Points 和价值100, 像这样:

[Points] => Array

    (
        [0] => 100
    )
在第二次发布时,它将生成以下内容:

[Points] => Array

    (
        [0] => 100
        [1] => 100
    )
等等。

如果需要任何其他结果,则需要调整参数或创建函数来处理结果。

例如,如果您希望每次以算术方式“添加”100个点,那么第二次发布会生成值“200”,第三次发布会生成值“300”,依此类推,那么您需要获取user\\u meta(如果有),然后以算术方式添加每个新值,然后用总和更新旧值,而不是简单地以编程方式将新值“添加”到数组中。

或者,您可以将任何值添加到一起,或者将它们转换为包含其他信息的子数组(您想要保存的任何其他$post值)。

SO网友:Pedro Coitinho

add_user_meta 有3个参数:用户id、元值和一个指示其是否唯一的布尔值。

通过省略第三个值,您将使用相同的值在user\\u meta表中保存不同的行。

似乎您要做的是获取当前值,添加到其中,然后保存新值,如下所示:

function post_published_add_points( $ID, $post ) {
  // get author id
  $author = $post->post_author;

  // get current meta value (and make sure its unique)
  $points = get_user_meta( $author, \'Points\', true );

  // add to value
  $points += 100;

  // save the new value (again, make sure its unique)
  add_user_meta( $author, \'Points\', $points, true); 
}
add_action( \'publish_post\', \'post_published_add_points\', 10, 2 );
希望有帮助!

SO网友:bestak

我想在我的网站上有一个类似的功能。这对我来说很好,但如上所述,分值仍然是“100”。我想每次都加上“100”个点,这样下一篇发表的文章就会产生200个值,以此类推。

你能帮我修改一下这个功能吗?

function post_published_add_points( $ID, $post ) {
  // get author id
  $author = $post->post_author;

  // get current meta value (and make sure its unique)
  $points = get_user_meta( $author, \'Points\', true );

  // add to value
  $points += 100;

  // save the new value (again, make sure its unique)
  add_user_meta( $author, \'Points\', $points, true); 
}
add_action( \'publish_customposttype\', \'post_published_add_points\', 10, 2 );

相关推荐

是否可以取消对特定帖子类型的POSTS_PER_PAGE限制?

我想知道我是否可以取消特定帖子类型的posts\\u per\\u页面限制。在存档中。php页面我显示不同的帖子类型,对于特定的“出版物”帖子类型,我想显示所有帖子。我如何在不影响传统“post”类型的情况下实现这一点?