首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示learnpress插件的课程视图数

显示learnpress插件的课程视图数
EN

Stack Overflow用户
提问于 2021-03-16 07:54:51
回答 1查看 186关注 0票数 0

你好,我在function.php中有这个代码片段,实际上我使用了一个learnpress插件钩子:learn-press/course-item-content,我也尝试了这个:learn-press/lesson-start,目标是为来宾和未登录的用户提供每个课程的学习新闻课程视图数量。我已经用Pods插件创建了lp_lesson类型的自定义字段视图。

代码语言:javascript
复制
<?PHP
// I inserted this code to show the number of views for each lesson  
//*************************************************************
add_action('learn-press/course-item-content', 'lesson_views');
function lesson_views(){
     $item = LP_Global::course_item();
     if(is_user_logged_in()){
         $user = wp_get_current_user();
         if ( !in_array( 'subscriber', (array) $user->roles ) ) {
             return;
         }
     }
         echo "<script>console.log('get_post_field".get_post_field('views',$item->get_id())."'); 
</script>";
         $tempval = 0;
     if(get_post_field('views',$item->get_id())==''||get_post_field('views',$item->get_id())==null)
     {
         $tempval = 1;
         echo "<script>console.log('tempval = 1');</script>";
     }
     else
     {
         $tempval = intval(get_post_field('views',$item->get_id()))+1;
         echo "<script>console.log('tempval = ".$tempval."');</script>";
     }
         update_post_meta($item->get_id(),'views',$tempval,get_post_field('views',$item->get_id()));
         echo "<script>console.log('get_post_field".get_post_field('views',$item->get_id())."'); 
 </script>";
 //End Of the code to show the number of views for each lesson 
 //*************************************************************    
}
add_action( 'updated_post_meta', 'my_update_post_meta', 10, 4 );

function my_update_post_meta($meta_id, $post_id, $meta_key, $_meta_value) 
{
    echo "<script>console.log('sth updated".$_meta_value."');</script>";
    if($meta_key =="views"){
        echo "<script>console.log('views updated".$_meta_value."');</script>";
    }
}

我注意到字段视图的更新只发生了一次,但当我刷新页面时,它实际上发生了两次。例如,如果现在views=1和我转到页面,它将是views=2,但在刷新页面后,我知道视图的最后一个值不是2,而是views=3!现在它将更改为views=4。我检查了如果我将递增的值更改为3,行中是否发生了$tempval = intval(get_post_field('views',$item->get_id()))+1;,结果是,如果views等于1,我转到页面,查看更新为4,但之后我再次转到页面,开始时值为7,它将更改为10,依此类推。我不明白为什么这种情况会发生两次,而我看不到任何证据表明这种代码会发生两次。因为我放入检查的脚本代码只发生一次,而check in update钩子证明了这一点。

EN

回答 1

Stack Overflow用户

发布于 2021-03-16 20:23:36

我没有找到这种情况发生两次的原因,但我可以用一种巧妙的方式编写一段代码,使一节课的页面浏览量达到课程的页面浏览量,并在elementor插件中使用。代码如下:

代码语言:javascript
复制
add_action('learn-press/lesson-start', 'lesson_views');
 function lesson_views($item){
     //$itemc = LP_Global::course_item();
     echo "<script>console.log('get_post_field".get_post_field('views',$item- 
 >get_id())."');</script>";
     $tempdata = get_post_field('views',$item->get_id());
     $postview = intval($tempdata);
     $postviewf = floatval($tempdata);
     $newvalue = floatval(0);
     if($postviewf > 0){
         if($postviewf - $postview == 0.5){
             $newvalue = round($postviewf);
         }else{
             $newvalue = $postview+0.5;
         }
         echo "<script>console.log('newvalue".$newvalue."');</script>";
     }else{
         $newvalue = 0.5;
     }
     $postID = $item->get_id();
     update_post_meta($postID,'views',$newvalue,$tempdata);
     echo "<script>console.log('get_post_field".get_post_field('views',$item- 
  >get_id())."');</script>";

 //End Of the code to show the number of views for each lesson  
 *************************************************************  
 }
 add_action( 'updated_post_meta', 'my_update_post_meta', 10, 4 );
 
     function my_update_post_meta($meta_id, $post_id, $meta_key, $_meta_value) 
     {
         echo "<script>console.log('sth updated".$_meta_value."');</script>";
         if(get_post_type( $post_id )=='lp_lesson' && $meta_key =="views"){
             echo "<script>console.log('views updated".$_meta_value."');</script>";
             update_post_meta($post_id,'viewsv2',round($_meta_value));
         }
     }

如果你试图在elementor插件中查看viewsv2作为自定义字段,它会显示具有subscriber角色的用户的确切页面浏览量,这些用户是学生,而不是登录的用户,这些用户是访客。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66647316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档