【问题标题】:show the number of lesson views for learnpress plugin显示 learnpress 插件的课程视图数量
【发布时间】:2021-03-15 23:54:51
【问题描述】:

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

<?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,但是刷新页面后,我知道views的最后一个值不是2,而是views=3!现在它将更改为views = 4。我检查了$tempval = intval(get_post_field('views',$item-&gt;get_id()))+1; 的行中是否会发生如果我将增加的值更改为 3,这将导致如果视图等于 1,我转到页面并将视图更新为 4,但之后我再次转到页面,开始时值为 7,然后会变为 10,依此类推。我不明白为什么这会发生两次,而我看不到任何证据表明此代码发生了两次。因为我检查的脚本代码发生了一次,并且检查更新钩子证明了这一点。

【问题讨论】:

    标签: php wordpress hook learnpress action-hook


    【解决方案1】:

    我没有找到两次发生这种情况的原因,但是我可以通过一种棘手的方式编写代码来获取课程的页面浏览量并在 elementor 插件中使用。这是代码:

    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 视为自定义字段,它会显示具有角色订阅者的用户的页面浏览量的确切数量,这些用户是学生,而未登录的用户是访客。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多