我编写了一个函数,在每个自定义帖子类型中按用户限制1篇帖子(我创建了3种自定义帖子类型)。
问题是我的函数限制所有用户发表一篇文章,而不是每个用户发表一篇文章。
能帮我个忙吗?我可以补充什么?
$post_types_name = array(\'subject-imposed\', \'subject-free\', \'dissertation\');
function limit_posts() {
global $post_types_name;
global $pagenow;
foreach ($post_types_name as $post_type_name) {
$count_post = wp_count_posts($post_type_name)->publish;
$max_posts = 1; //the number of max published posts
if($count_post >= $max_posts){
if (! empty($pagenow) && (\'post-new.php\' === $pagenow && ( $_GET[\'post_type\'] == $post_type_name)) || ! empty($pagenow) && (\'edit.php\' === $pagenow && ( $_GET[\'post_type\'] == $post_type_name)) ){
?>
<style>
.editor-limit {
text-align: center;
}
</style>
<script type="text/javascript">
jQuery(window).load(function() {
jQuery(\'.editor-styles-wrapper\').html(\'<p class="editor-limit">You have reached the maximum number of posts.</p>\');
});
</script>
<?php
}
}
}
}
add_action(\'admin_head\' , \'limit_posts\');
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成
您正在使用wp_count_posts(
用于计算职位,因此它将返回职位数量。
如果要获取给定用户的帖子数量,应使用count_user_posts
相反
因此,请更改此行:
$count_post = wp_count_posts($post_type_name)->publish;
致:
$count_post = count_user_posts( get_current_user_id(), $post_type_name, true );