angelovcom.net

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

robots-template.php (5173B)


      1 <?php
      2 /**
      3  * Robots template functions.
      4  *
      5  * @package WordPress
      6  * @subpackage Robots
      7  * @since 5.7.0
      8  */
      9 
     10 /**
     11  * Displays the robots meta tag as necessary.
     12  *
     13  * Gathers robots directives to include for the current context, using the
     14  * {@see 'wp_robots'} filter. The directives are then sanitized, and the
     15  * robots meta tag is output if there is at least one relevant directive.
     16  *
     17  * @since 5.7.0
     18  * @since 5.7.1 No longer prevents specific directives to occur together.
     19  */
     20 function wp_robots() {
     21 	/**
     22 	 * Filters the directives to be included in the 'robots' meta tag.
     23 	 *
     24 	 * The meta tag will only be included as necessary.
     25 	 *
     26 	 * @since 5.7.0
     27 	 *
     28 	 * @param array $robots Associative array of directives. Every key must be the name of the directive, and the
     29 	 *                      corresponding value must either be a string to provide as value for the directive or a
     30 	 *                      boolean `true` if it is a boolean directive, i.e. without a value.
     31 	 */
     32 	$robots = apply_filters( 'wp_robots', array() );
     33 
     34 	$robots_strings = array();
     35 	foreach ( $robots as $directive => $value ) {
     36 		if ( is_string( $value ) ) {
     37 			// If a string value, include it as value for the directive.
     38 			$robots_strings[] = "{$directive}:{$value}";
     39 		} elseif ( $value ) {
     40 			// Otherwise, include the directive if it is truthy.
     41 			$robots_strings[] = $directive;
     42 		}
     43 	}
     44 
     45 	if ( empty( $robots_strings ) ) {
     46 		return;
     47 	}
     48 
     49 	echo "<meta name='robots' content='" . esc_attr( implode( ', ', $robots_strings ) ) . "' />\n";
     50 }
     51 
     52 /**
     53  * Adds noindex to the robots meta tag if required by the site configuration.
     54  *
     55  * If a blog is marked as not being public then noindex will be output to
     56  * tell web robots not to index the page content. Add this to the
     57  * {@see 'wp_robots'} filter.
     58  *
     59  * Typical usage is as a {@see 'wp_robots'} callback:
     60  *
     61  *     add_filter( 'wp_robots', 'wp_robots_noindex' );
     62  *
     63  * @since 5.7.0
     64  *
     65  * @see wp_robots_no_robots()
     66  *
     67  * @param array $robots Associative array of robots directives.
     68  * @return array Filtered robots directives.
     69  */
     70 function wp_robots_noindex( array $robots ) {
     71 	if ( ! get_option( 'blog_public' ) ) {
     72 		return wp_robots_no_robots( $robots );
     73 	}
     74 
     75 	return $robots;
     76 }
     77 
     78 /**
     79  * Adds noindex to the robots meta tag for embeds.
     80  *
     81  * Typical usage is as a {@see 'wp_robots'} callback:
     82  *
     83  *     add_filter( 'wp_robots', 'wp_robots_noindex_embeds' );
     84  *
     85  * @since 5.7.0
     86  *
     87  * @see wp_robots_no_robots()
     88  *
     89  * @param array $robots Associative array of robots directives.
     90  * @return array Filtered robots directives.
     91  */
     92 function wp_robots_noindex_embeds( array $robots ) {
     93 	if ( is_embed() ) {
     94 		return wp_robots_no_robots( $robots );
     95 	}
     96 
     97 	return $robots;
     98 }
     99 
    100 /**
    101  * Adds noindex to the robots meta tag if a search is being performed.
    102  *
    103  * If a search is being performed then noindex will be output to
    104  * tell web robots not to index the page content. Add this to the
    105  * {@see 'wp_robots'} filter.
    106  *
    107  * Typical usage is as a {@see 'wp_robots'} callback:
    108  *
    109  *     add_filter( 'wp_robots', 'wp_robots_noindex_search' );
    110  *
    111  * @since 5.7.0
    112  *
    113  * @see wp_robots_no_robots()
    114  *
    115  * @param array $robots Associative array of robots directives.
    116  * @return array Filtered robots directives.
    117  */
    118 function wp_robots_noindex_search( array $robots ) {
    119 	if ( is_search() ) {
    120 		return wp_robots_no_robots( $robots );
    121 	}
    122 
    123 	return $robots;
    124 }
    125 
    126 /**
    127  * Adds noindex to the robots meta tag.
    128  *
    129  * This directive tells web robots not to index the page content.
    130  *
    131  * Typical usage is as a {@see 'wp_robots'} callback:
    132  *
    133  *     add_filter( 'wp_robots', 'wp_robots_no_robots' );
    134  *
    135  * @since 5.7.0
    136  *
    137  * @param array $robots Associative array of robots directives.
    138  * @return array Filtered robots directives.
    139  */
    140 function wp_robots_no_robots( array $robots ) {
    141 	$robots['noindex'] = true;
    142 
    143 	if ( get_option( 'blog_public' ) ) {
    144 		$robots['follow'] = true;
    145 	} else {
    146 		$robots['nofollow'] = true;
    147 	}
    148 
    149 	return $robots;
    150 }
    151 
    152 /**
    153  * Adds noindex and noarchive to the robots meta tag.
    154  *
    155  * This directive tells web robots not to index or archive the page content and
    156  * is recommended to be used for sensitive pages.
    157  *
    158  * Typical usage is as a {@see 'wp_robots'} callback:
    159  *
    160  *     add_filter( 'wp_robots', 'wp_robots_sensitive_page' );
    161  *
    162  * @since 5.7.0
    163  *
    164  * @param array $robots Associative array of robots directives.
    165  * @return array Filtered robots directives.
    166  */
    167 function wp_robots_sensitive_page( array $robots ) {
    168 	$robots['noindex']   = true;
    169 	$robots['noarchive'] = true;
    170 	return $robots;
    171 }
    172 
    173 /**
    174  * Adds 'max-image-preview:large' to the robots meta tag.
    175  *
    176  * This directive tells web robots that large image previews are allowed to be
    177  * displayed, e.g. in search engines, unless the blog is marked as not being public.
    178  *
    179  * Typical usage is as a {@see 'wp_robots'} callback:
    180  *
    181  *     add_filter( 'wp_robots', 'wp_robots_max_image_preview_large' );
    182  *
    183  * @since 5.7.0
    184  *
    185  * @param array $robots Associative array of robots directives.
    186  * @return array Filtered robots directives.
    187  */
    188 function wp_robots_max_image_preview_large( array $robots ) {
    189 	if ( get_option( 'blog_public' ) ) {
    190 		$robots['max-image-preview'] = 'large';
    191 	}
    192 	return $robots;
    193 }