禁止某些用户访问特定页面

时间:2019-04-29 作者:noahlayer

我想建立一个博客,允许每个用户在成功注册后发布一些东西(只有文本)。但是,用户应该只访问自己上传了至少一个贡献的用户的其他贡献。因为我使用的是插件Ultimate成员,所以以后不可能更改角色。因此,如果用户还没有上传任何内容,那么如果整个博客不再可以访问,那么这将是最简单的。但我怎么能意识到这一点呢?

请尽快回答

你好,诺亚

1 个回复
SO网友:phatskat

如果用户没有撰写帖子,此代码将引导其退出。在本示例中,状态为的帖子publish 被视为“作者”。

我在代码中添加了一些注释,以引导您了解正在发生的事情-如果您有任何问题,请联系我。

<?php

// Ensure non-published users can\'t see what\'s going on.
add_action( \'init\', function() {
    // Don\'t run in the admin area.
    if ( is_admin() ) {
        return;
    }

    // Only display this on "single" pages.
    if ( ! is_single() ) {
        return;
    }

    $user_id = get_current_user_id();

    // The user isn\'t a user, bail.
    if ( ! $user_id ) {
        return;
    }

    $query = <<<SQL
SELECT
    COUNT(*) published
FROM
    {$GLOBALS[\'wpdb\']->posts}
WHERE
    post_author = %d
AND
    post_type = %s
AND
    post_status = \'publish\'
SQL;

    $result = $GLOBALS[\'wpdb\']->get_results(
        $GLOBALS[\'wpdb\']->prepare(
            $query,
            $user_id,
            \'post\' // Replace this with your Custom Post Type, if you\'re not using Post.
        )
    );

    // The current user has author posts, bail.
    if ( ! empty( $result ) ) {
        return;
    }

    // Handle code to kick people out.
    wp_safe_redirect( \'/error-page/\' );
    exit;
} );

相关推荐

向admin-post.php发出POST请求

我正在尝试从我的管理设置页面上发布一个新插件的请求。提交后,以下代码将我带到一个空白页(URL为:http://192.168.1.33:3000/wptest2/wp-admin/admin-post.php). 没有var转储,没有重定向到google。没有控制台错误,我在日志中也没有看到任何apache错误。我怀疑表单没有提交到正确的目的地。 <form action=\"<?php echo esc_url(admin_url(\'admin-pos