• Resolved gailwingate1

    (@gailwingate1)


    Hi, I have very little experience with SEO, but I need to be able to secure our posts in the following manner.

    We want to be able to drive people to our site by displaying post titles and excerpts in search engine results such as Google. However, some of those posts require the user to be a subscriber, so if the user clicks on the title link from a search engine it should take them to a page we created that directs the user to register and login. But there are also posts that would be available to the general public.

    Now this is where it gets a little tricky for us. The viewing restrictions of each post are set by the post authors through a front-end posting plugin. I’ve been forced to create a custom taxonomy of viewing restrictions from which the authors must choose. In other words, authors post content through a front-end plugin (they have no access to the WP Admin) and choose one or more of the custom taxonomy values to set the viewing restrictions such as general-public or subscriber.

    So, I need to be able to set search engine restrictions on posts based on this custom taxonomy value. For example, if a custom taxonomy value is general-public, then when those posts with that value are displayed in search engine results, users could click on the title link and see the content. But posts that do not have the custom taxonomy value of general-public will still see the post title and excerpt in the search engine results, but when they click on the title it will take them to our membership options page.

    I hope this makes sense. Will your plugin allow me to do all of this? How much of this will your plugin provide?

    Thank you for help!

    Regards,
    Gail

    https://www.ads-software.com/plugins/autodescription/

Viewing 4 replies - 1 through 4 (of 4 total)
  • Plugin Author Sybre Waaijer

    (@cybr)

    Hi Gail,

    Since 2.5.2, the post excerpts are being used to generate an automated description, if set.

    If I understand correctly, if the taxonomy is “general-public”, everything should be working as expected. The post can be seen, indexed, (re)viewed, etc. by the Search Engine.

    If this is not the case, then everything should still work the same, except for that the post has a wrapper saying: “Need subscription”.

    If I didn’t misunderstand this, I believe what you’re requesting should work out of the box!

    Please be aware that the excerpt has to be set because I believe you use shortcodes to output this kind of things. Shortcodes, are for exactly this reason (hidden content), hidden from the description.
    Custom excerpts do not have this restriction (unless they also contain shortcodes, which is unlikely).

    Please be aware that when the description does not represent its content at all, the page could be seen as spam. I believe the Search Engine is not allowed to view the page.

    What I recommend, if possible, is to allow the Google bot, Bing bot and Yahoo bot (Many search engines rely on Yahoo) through to the post content, but disable archiving (so they can’t show a cache within Google or other allowed Search Engines).

    I see I have yet to apply a filter to the robots output, I’ll be sure to add it in 2.6.0 (next update). With this filter you can adjust the robots output settings in special case scenarios, like these.

    I hope this helps! Let me know if you are in need of any more assistance.

    Thanks and have a great day! ??

    Thread Starter gailwingate1

    (@gailwingate1)

    Hi!

    Thank you for getting back to me so quickly. I can use your plugin to help protect my pages, but it’s the posts that become a problem. Since our authors are not creating posts through the WP-Admin, they do not have the ability to set the nofollow attribute. All they do is set the value of a custom taxonomy which determines the level of viewing restrictions on the the post they are creating. But these viewing restrictions only apply when users are at the website. These viewing restrictions don’t apply when the links show in the results of a search from Google or Bing or Yahoo. That’s why I need some way to to be able to globally set the nofollow or noindex values for all posts that are given a certain category value or a certain custom taxonomy value.

    So, if the author creates a new post and sets the custom taxonomy value to “subscriber,” then I’d like the post to automatically be set to nofollow. Does that make sense?

    Thank you!
    Gail

    Plugin Author Sybre Waaijer

    (@cybr)

    Hi Gail,

    This can be achieved by adjusting the setting values.

    This example has been tested and works as intended, fair caution: use at own risk as it updates all the term meta options. Only works on Terms and Taxonomies. So not on posts and pages.

    Requires 1 visit to update, the 2nd visit will have an effect. (Reason: The SEO Framework caches all data very early.)

    //* Right before Robots output is rendered.
    add_action( 'wp_head', 'my_custom_robots_settings', 0 );
    function my_custom_robots_settings() {
    	global $wp_query;
    
    	//* We're running a query, probably front-end.
    	if ( isset( $wp_query->query ) ) {
    		//* Cache the query in $query (PHP 5.2 compat)
    		$query = $wp_query->query;
    
    		//* Dump the query.
    		//	var_dump( $wp_query);
    
    		if ( isset( $query->category_name ) && 'general-public' !== $query->category_name ) {
    			//* We're on a post without the general-public taxonomy.
    
    			//* CAUTION, this will override all meta data from ALL categories besides the general-public one on visit.
    
    			$term = $wp_query->get_queried_object();
    
    			//* Dump term.
    			// var_dump( $term );
    
    			if ( isset( $term->admeta ) ) {
    				$admeta = $term->admeta;
    
    				//* Don't keep merging and updating. Only run once per archive.
    				if 	(
    						( isset( $admeta['noindex'] )	&& '1' === $admeta['noindex'] )
    					||	( isset( $admeta['noarchive'] )	&& '1' === $admeta['noarchive'] )
    					||	( isset( $admeta['nofollow'] )	&& '1' === $admeta['nofollow'] )
    					) return; // So we stop the function is any of the above values are set.
    			}
    
    			$term_id = $wp_query->get_queried_object_id();
    
    			//* Get all stored taxonomy term data (of the whole site)
    			$term_meta = (array) get_option( 'autodescription-term-meta' );
    
    			//* Get current metadata.
    			$current_values = $term_meta[$term_id];
    
    			//* This is what we want to add.
    			$new_values = array(
    					'noindex' => '1',
    					'nofollow' => '1',
    					'noarchive' => '1',
    				);
    
    			//* Merge the new and old values.
    			$merged_values = wp_parse_args( $new_values, $current_values );
    
    			//* Merge the data and put into category.
    			$term_meta[$term_id] = $merged_values;
    
    			//* And save.
    			update_option( 'autodescription-term-meta', $term_meta );
    		}
    
    	}
    
    }

    In the future there’s will be a better filter for these occasions. As this is a framework, every little aspect, even if very difficult (like the one above) should be adjustable.

    Unless I know the exact query, the way of taxonomies you’re using, and the way your site is set up, I can’t really help you any further.
    As you can see, it requires developer knowledge to create something dynamic, especially when it’s out of the default WordPress behavior.

    Please note that what you’re requesting is very specific, so my response time is a tad slow.

    Either way, I hope this helps!

    Thanks and have a wonderful weekend! ??

    Plugin Author Sybre Waaijer

    (@cybr)

    Hi Gail,

    2.6.0 will contain the following filter to adjust robots meta output:
    the_seo_framework_robots_meta

    Example usage:

    add_filter( 'the_seo_framework_robots_meta', 'my_robots_data', 10, 1 );
    function my_robots_data( $robots ) {
    
    	//* Remove noindex from every page
    	unset( $robots['noindex'] );
    
    	//* Add noarchive on category tags.
    	if ( is_category() )
    		$robots['noarchive'] = 'noarchive';
    
    	return $robots;
    }

    I hope this is what you wished for ??

    Stay tuned and have a wonderful day! ??

Viewing 4 replies - 1 through 4 (of 4 total)
  • The topic ‘Can your plugin do this?’ is closed to new replies.