• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

WP SITES

2785

Original Genesis & WooCommerce Tutorials & 6000+ Guaranteed Code

Snippets

  • Try Premium
  • Log in

Limit Content For Logged Out Users

This code enables you to limit the content on single posts & pages to logged out users.

You can limit the content simply by using a character limit in the code.

The full content will only be displayed for logged in users.

And a login form will display after the content limit for logged out users on single posts and pages only.

The code is very flexible and enables you to easily modify the conditional tags and character limit. You can also use the code for custom post types.

Here’s an example of what logged out users see:

logged-out-users

And here’s what logged in users see:

logged-in-users

Simply as that. All you need to do is copy & paste the PHP code to the end of your child themes functions file and change the styling of your login form if desired.

The code works in any theme as it uses a WordPress hook and has been tested using the Genesis Sample child theme by StudioPress.

The solution in this tutorial is based on this question from a members of the StudioPress Community Forums:

Hi, Just setting up a new blog and we want to display the header and either the first couple of line of each blog or an excerpt to all users but only display the full articles to logged in users.

Here’s the code for logged in members:

add_filter( 'the_content', 'filter_content', 10, 1 ); 
 
function filter_content( $content ) { 
    
    $limit = wp_trim_words( get_the_content(), 40, '.....' );

    $login_form = sprintf( '<p><h4 class="entry-meta"><a href="%s">Register</a> or login below to view all content.</h4></p>', esc_url( wp_registration_url() ) );
    
    $login_form .= sprintf( '<p class="login-form">%s</p>', wp_login_form( array( 'echo' => false ) ) );
    
    $limit = $limit . $login_form;

    $output = ! is_user_logged_in() && is_single() ? $limit : $content;
    
    return $output;
}

You could also swap out is_single() and use is_singular(array( 'post','page' ) ) instead.

Related Code Snippets

  • Hide Posts From Logged Out Users
  • Force Logged Out Users To Register To View Full Content

Reader Interactions

Leave a Reply Cancel reply

You must be logged in to post a comment.

Primary Sidebar

Code written by Brad Dalton specialist for Genesis, WooCommerce & WordPress theme customization. Read More…

Advertise · WPEngine · Genesis · Log in

  • Access Problems
  • Account Details
  • Consulting
  • Tags
 

Loading Comments...
 

You must be logged in to post a comment.