查看帖子内容时更新作者的用户元

时间:2012-06-19 作者:Pollux Khafra

我有一个值,我正试图存储为我的网站上的作者的用户元。我需要它在每次为作者查看帖子内容时进行自我更新。这是我所能得到的,但它没有存储价值。我在函数中使用它。php。

function user_score() {
    global $bp;
    $author_id = $bp->displayed_user->id; // do stuff to get user ID

    $author_posts = get_posts( array(
      \'author\' => $author_id,
      \'posts_per_page\' => -1
    ) );

    $counter = 0;
    foreach ( $author_posts as $post )
    {
      $score = get_post_meta( $post->ID, \'ratings_score\', true );
      $counter += $score;
    }
    update_user_meta( $author_id, \'user_score\', $counter );
    if ($echo)
      echo $counter;
    return $counter;
}
add_filter(\'the_content\',\'update_user_score\');
function update_user_score($content){
  global $post;
  user_score();
  return $content;
}

2 个回复
SO网友:Gembel Intelek

未经测试,但应能正常工作

   add_filter(\'the_content\',\'update_user_score\');
    function update_user_score($content){
        global $post;
        $counter = 0;
        $score = get_post_meta( $post->ID, \'ratings_score\', true );
        $counter += $score;
        update_user_meta( $post->post_author, \'user_score\', $counter);
        return $content;
    }

SO网友:Sisir

我会用行动wp_footer. 你可以做下面这样的事情。无论何时显示帖子,都不需要循环浏览所有帖子。只需将当前帖子分数添加到当前帖子的用户。

add_action(\'wp_footer\', \'wpse55725_update_user_score\');

function wpse55725_update_user_score(){
    if( !is_singular(\'post\') )    
        return;    // only run for single post

    global $post;
    $current_score = get_user_meta( $post->post_author, \'user_score\', true ); // get current score of the user
    $score_points = get_post_meta( $post->ID, \'ratings_score\', true ); // score for the post
    $score = $current_score + $score_points; // add the score to users current score

    update_user_meta( $post->post_author, \'user_score\', $score); // save it

}
代码未测试。

相关推荐

Organize functions.php

组织职能的最佳方式是什么。php的性能?我有几个add\\u操作调用、几个add\\u主题支持、几个add\\u过滤器和4个附加函数。对于面包屑、样式表、注册菜单和小部件。我们是否需要遵守订单?例如,首先是所有add\\u过滤器函数,然后是add theme\\u support等。不确定添加代码是否相关,因为这是一个一般性问题。如果需要,我很乐意更新这篇文章。