检查用户是否在WordPress上具有自定义发布发布重定向

时间:2019-04-04 作者:joy

我试图在用户访问某个页面时运行检查,以查看当前用户是否有自定义帖子类型的已发布帖子或草稿帖子。如果他们这样做了,那么我正试图改变他们的方向。我已经找到了一些帖子,但没有运气把它们放在一起以满足我的需要。我可以更容易地理解模板重定向功能,所以我尝试过这样做。我不确定这是不是最好的方法。

我尝试使用以下代码片段:

Redirect based on user post count

How to check that if current user (ID) has posts or not

Check if current user has post in post type and is author role

add_action( \'template_redirect\', \'redirect_to_specific_page_resume\' );

function redirect_to_specific_page_resume() {
global $post;

$current_user = $post->post_author;

if(!empty($current_user)){
$user_post_count = (int) count_user_posts( $current_user );

   if ( is_page(\'479\') && $user_post_count == 1 ) {

        wp_redirect( "/myaccount/manage-resumes", 301 ); 

        exit;

  }
如果当前用户转到第一页,并且是自定义帖子类型的已发布或草稿作者,则重定向到第二页。如果当前用户转到第一页,并且不是自定义帖子类型的已发布作者,则不执行任何操作,正常加载第一页。

非常感谢。

1 个回复
最合适的回答,由SO网友:butlerblog 整理而成

如果我正确理解您的问题和代码,我认为您的问题如下:

$current_user = $post->post_author;
您正在将当前用户评估为文章作者。因此,您的逻辑计算将检查“如果页面为479,而帖子ID为479的作者ID仅发布了1篇帖子,则重定向”。我不认为这是你的意图。

此外,您使用count_user_posts() 不检查帖子类型,但您会询问用户是否是自定义帖子类型的作者。自定义帖子类型是什么?这不是你要检查的吗count_user_posts()? 如果CPT段塞未通过in that function, 它只会检查“帖子”。下面的示例假设您要检查正在检查的is\\u page()值的post类型(479)。

最后呢,您正在检查用户的草稿或发布的帖子类型是否等于(==)1?如果是2呢?我怀疑这里的逻辑应该是“大于”(>)。

因此,在你的问题中有很多未回答的问题和一些明确的灰色区域,但根据我的猜测,这里有一个尝试:

add_action( \'template_redirect\', \'redirect_to_specific_page_resume\' );

function redirect_to_specific_page_resume() {

    /*
     * Only bother to check if the user is logged in 
     * AND we\'re on page ID 479. Otherwise, there\'s no
     * reason to run the remaining logic.
     */
    if ( is_user_logged_in() && is_page( 479 ) ) {

        // Get the current logged in user\'s ID
        $current_user_id = get_current_user_id();

        // Count the user\'s posts for \'resume\' CPT
        $user_post_count = (int) count_user_posts( $current_user_id, \'resume\' );

        // If the user has a \'resume\' CPT published
        if ( $user_post_count > 1 ) {

            // Get the URL to redirect the user to.
            $url = get_permalink( 480 );

            // Redirect the user.
            wp_redirect( $url ); 
            exit();

        }
    }
}

相关推荐

Wp-login.php?reDirect_to=HTTPS问题

wp登录。php?redirect\\u to=https问题如果我在错误的地方发帖,请原谅我,但我在这里是想看看你是否能在你的时间里帮我几分钟。问题是,一个网站在wp登录时显示出持续的内部错误。php。我能够登录并访问前端,没有任何困难。我尝试过调试,但错误没有显示在任何页面上。我测试了主题、插件等,etcI检查了htaccess文件是否存在损坏(没有损坏),我将htaccess文件设置为调试和显示,但没有显示任何内容。我确实检查了服务器端的调试文件,它显示了一个插件的一些错误,当我停用该插件时,内部错