在每种自定义帖子类型中,按用户限制1篇帖子

时间:2020-06-04 作者:Jandon

我编写了一个函数,在每个自定义帖子类型中按用户限制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\');

1 个回复
最合适的回答,由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 );