wp_robots

The timeline below displays how wordpress function wp_robots has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 7.1

/**
 * Robots template functions.
 *
 * @package WordPress
 * @subpackage Robots
 * @since 5.7.0
 */
/**
 * Displays the robots meta tag as necessary.
 *
 * Gathers robots directives to include for the current context, using the
 * {@see 'wp_robots'} filter. The directives are then sanitized, and the
 * robots meta tag is output if there is at least one relevant directive.
 *
 * @since 5.7.0
 * @since 5.7.1 No longer prevents specific directives to occur together.
 */
function wp_robots()
{
    /**
     * Filters the directives to be included in the 'robots' meta tag.
     *
     * The meta tag will only be included as necessary.
     *
     * @since 5.7.0
     *
     * @param array $robots Associative array of directives. Every key must be the name of the directive, and the
     *                      corresponding value must either be a string to provide as value for the directive or a
     *                      boolean `true` if it is a boolean directive, i.e. without a value.
     */
    $robots = apply_filters('wp_robots', array());
    $robots_strings = array();
    foreach ($robots as $directive => $value) {
        if (is_string($value)) {
            // If a string value, include it as value for the directive.
            $robots_strings[] = "{$directive}:{$value}";
        } elseif ($value) {
            // Otherwise, include the directive if it is truthy.
            $robots_strings[] = $directive;
        }
    }
    if (empty($robots_strings)) {
        return;
    }
    echo "<meta name='robots' content='" . esc_attr(implode(', ', $robots_strings)) . "' />\n";
}

WordPress Version: 5.7

/**
 * Robots template functions.
 *
 * @package WordPress
 * @subpackage Robots
 * @since 5.7.0
 */
/**
 * Displays the robots meta tag as necessary.
 *
 * Gathers robots directives to include for the current context, using the
 * {@see 'wp_robots'} filter. The directives are then sanitized, and the
 * robots meta tag is output if there is at least one relevant directive.
 *
 * @since 5.7.0
 */
function wp_robots()
{
    /**
     * Filters the directives to be included in the 'robots' meta tag.
     *
     * The meta tag will only be included as necessary.
     *
     * @since 5.7.0
     *
     * @param array $robots Associative array of directives. Every key must be the name of the directive, and the
     *                      corresponding value must either be a string to provide as value for the directive or a
     *                      boolean `true` if it is a boolean directive, i.e. without a value.
     */
    $robots = apply_filters('wp_robots', array());
    // Don't allow mutually exclusive directives.
    if (!empty($robots['follow'])) {
        unset($robots['nofollow']);
    }
    if (!empty($robots['nofollow'])) {
        unset($robots['follow']);
    }
    if (!empty($robots['archive'])) {
        unset($robots['noarchive']);
    }
    if (!empty($robots['noarchive'])) {
        unset($robots['archive']);
    }
    $robots_strings = array();
    foreach ($robots as $directive => $value) {
        if (is_string($value)) {
            // If a string value, include it as value for the directive.
            $robots_strings[] = "{$directive}:{$value}";
        } elseif ($value) {
            // Otherwise, include the directive if it is truthy.
            $robots_strings[] = $directive;
        }
    }
    if (empty($robots_strings)) {
        return;
    }
    echo "<meta name='robots' content='" . esc_attr(implode(', ', $robots_strings)) . "' />\n";
}