This will restrict all users, except admins to edit a post after one day. You can, however, change the allowed user roles or time by simply tweaking the code.
function wpse405644_restrict_editing() {
$screen = get_current_screen();
if ( $screen->base == 'post' && $screen->post_type == 'courses' ) {
$post = get_post($_GET['post']);
$user = wp_get_current_user();
if ( !in_array( 'administrator', $user->roles ) ) {
if ( $post->post_status == 'publish' && (strtotime( $post->post_date ) < strtotime( '-1 day' )) ) {
wp_die( 'You are not allowed to edit this post.');
}
}
}
}
add_action( 'current_screen', 'wpse405644_restrict_editing' );
You may need to change the CPT with your own.
EDIT (Frontend Restriction)
This code goes in your theme’s functions.php
.
function wpse405644_is_frontend_editing_allowed () {
if ( isset($_GET['course_ID']) && !empty($_GET['course_ID']) ) {
$post = get_post($_GET['course_ID']);
$user = wp_get_current_user();
if ( !in_array( 'administrator', $user->roles ) ) {
if ( $post->post_status == 'publish' && (strtotime( $post->post_date ) < strtotime( '-1 day' )) ) {
return false;
}
}
}
return true;
}
Now at the create course template, wrap the whole content section with the conditional function.
<?php
defined( 'ABSPATH' ) || exit;
get_tutor_header( true );
if ( wpse405644_is_frontend_editing_allowed() ) {
// The content BETWEEN get_tutor_header and get_tutor_footer goes here.
} else {
echo '<h2>You are not allowed to edit this post.</h2>';
}
<?php get_tutor_footer( true );
This will show a message when the user isn’t allowed to edit course.