你好,我在function.php中有这个代码片段,实际上我使用了一个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->get_id()))+1;
如果我将增加的值更改为 3 时发生的行中,这将导致如果视图等于 1,我转到页面并将视图更新为 4,但之后我再次转到页面,开始时值为 7,然后会变为 10,依此类推。我不明白为什么这会发生两次,而我看不到任何证据表明此代码发生了两次。因为我检查的脚本代码发生了一次,并且检查更新钩子证明了这一点。