WooCommerce get_author_posts_url() - Author URL redirecting to shop base

I've noticed that when I have WooCommerce enabled and use get_author_posts_url() it automatically redirects to the 'shop base' when the user's role is Customer.

When I change the user to Subscriber get_author_posts_url() works correctly.

I've disabled all plugins to systematically identify what was causing the issue and can confirm that it's only when WooCommerce is enabled. I've also flushed rewrites. I've also even tried using $user-add_role( 'subscriber' ) to the user's capabability array.

Does anyone know why this is happening and how I can suppress it? (i.e. don't redirect get_author_posts_url() for users with a customer role.

EDIT

I believe this to be a bug, I've opened a bug ticket with WC and have posted on the WP forum thread

For now I've just set all 'customer' users to 'subscribers' when I get a reply/make any headway I will post back here.

Thanks in advance!

Topic woocommerce-offtopic user-roles author-template redirect Wordpress

Category Web


I found!

https://wordpress.org/support/topic/how-to-add-author-page-to-custom-user-role/#post-8807168

So in WooCommerce, this is achieved by the following code in wp-content/plugins/woocommerce/includes/wc-user-functions.php:

/**
 * Disable author archives for customers.
 *
 * @since 2.5.0
 */
function wc_disable_author_archives_for_customers() {
    global $wp_query, $author;

    if ( is_author() ) {
        $user = get_user_by( 'id', $author );

        if ( isset( $user->roles[0] ) && 'customer' === $user->roles[0] ) {
            wp_redirect( wc_get_page_permalink( 'shop' ) );
        }
    }
}

add_action( 'template_redirect', 'wc_disable_author_archives_for_customers' );


In your theme’s functions.php (or somewhere else appropriate), you could turn that off:

/* This removes the function that redirects customers to the shop page */
function enable_author_archives_for_customers() {
  remove_action('template_redirect', 'wc_disable_author_archives_for_customers');
}
add_action( 'after_setup_theme', 'enable_author_archives_for_customers' );

About

Geeks Mental is a community that publishes articles and tutorials about Web, Android, Data Science, new techniques and Linux security.