подскажите какой хук публикации и получиться ли так проверить на лимит?
add_action( 'add_post_rcl', 'post_limit', 99, 1 ); - правильный ли хук? function post_limit() { $wpdb->get_results(SELECT COUNT(ID) FROM `wp_posts` WHERE wp_posts.post_type='post' AND wp_posts.post_status='publish' AND wp_posts.post_date = CURDATE() AND wp_posts.post_autor = $user_id); if ( $wpdb > '5' ) { return false; } }
только почему-то публикует не смотря на проверку, подскажите , пожалуйста ,что не учел ,вывел каунт print_r($count); показало 25
add_action( 'transition_post_status', 'post_limit', 10, 3 ); function post_limit( $new_status, $old_status, $post ) { global $wpdb; $count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(wp_posts.ID) FROM `wp_posts` WHERE wp_posts.post_type='post' AND wp_posts.post_status='publish' AND wp_posts.post_date between CURDATE() AND CURDATE()+1 AND wp_posts.post_author=".$post->post_author)); if ( $count > 5 ) { return false; } }
форма скрылась ,но сообщение не вывелось ,что не дописал ?
function filter_function_name( $data ) { if(!isset($data['postform'])) return $data; $data['postform']['content'][0]['callback'] = 'new_function_postform'; return $data; } add_filter( 'rcl_tabs', 'filter_function_name' ); function new_function_postform($user_lk){ echo "лимит 5 постов в сутки"; }
вот массив,но не зависимо от того что , что-то то меняю вкладка остаеться
print_r($data['prime-forum']);
Array ( [id] => prime-forum [supports] => Array ( [0] => ajax ) [name] => Форум [public] => 0 [icon] => fa-sitemap [output] => menu [content] => Array ( [0] => Array ( [id] => my-topics [icon] => fa-folder [name] => Начатые темы [callback] => Array ( [name] => pfm_get_user_topics_list ) ) [1] => Array ( [id] => my-posts [icon] => fa-folder [name] => Сообщения в чужих темах [callback] => Array ( [name] => pfm_user_posts_other_topics ) ) ) [hidden] => 0 [order] => 4 )
или такой масив print_r($data['postform']);
Array ( [id] => postform [name] => Публикация [public] => 0 [icon] => fa-pencil [content] => Array ( [0] => Array ( [callback] => new_function_postform [id] => postform [name] => Публикация [icon] => fa-pencil ) ) [hidden] => 0 [order] => 6 )
Может лучше так попробовать
add_action( 'rcl_preview_post', 'my_function', 10 ); function my_function( $postdata ) { if($postdata['post_type']!= 'post') return ; global $wpdb; //здесь получаете сколько опубликовал в сутки if ( $count >= 5 ) { wp_send_json(['error' => 'лимит 5 постов в сутки!']); } }
bocman.sev@gmail.com сказал(а)
[callback] => new_function_postform
- ну это название вашей функции? А в ней что?
василий сказал(а)
Может лучше так попробовать
ну... значит пользователь пишет полчаса, час - а потом бац и ему не дают публиковать? Эти сообщения надо выводить до того как кто-то захочет написать. т.е. вариант через подмену коллбека функции - самый честный для пользователя
ну... значит пользователь пишет полчаса, час - а потом бац и ему не дают публиковать? Эти сообщения надо выводить до того как кто-то захочет написать. т.е. вариант через подмену коллбека функции - самый честный для пользователя
Тоже верно. Вы правы. Лучше сразу спрятать форму.
так сделал без подсоединения к хуку публикации и отработало правильно
function filter_function_name( $data ) { if(!isset($data['postform'])) return $data; global $wpdb; global $user_LK; $count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(wp_posts.ID) FROM `wp_posts` WHERE wp_posts.post_type='post' AND wp_posts.post_status='publish' AND wp_posts.post_date between CURDATE() AND CURDATE()+1 AND wp_posts.post_author=".$user_LK)); if ( $count > 5 ) { $data['postform']['content'][0]['callback']['name'] = new_function_postform;} return $data; } add_filter( 'rcl_tabs', 'filter_function_name' ); function new_function_postform($user_lk){ return '<h3>лимит 5 постов в сутки</h3>'; }