The virtual robots.txt file is generated via the do_robots() function, along with any directives added via the robots_txt filter.
But I can't figure out a way to display the generated robots.txt directives. Using this will result in an entire page of content (including headers):
$robots_text = do_robots();
Is there a way to display the generated robots.txt directives?
Here's the code for do_robots() (from https://developer.wordpress.org/reference/functions/do_robots/)
function do_robots() {
header( 'Content-Type: text/plain; charset=utf-8' );
/**
* Fires when displaying the robots.txt file.
*
* @since 2.1.0
*/
do_action( 'do_robotstxt' );
$output = "User-agent: *\n";
$public = get_option( 'blog_public' );
$site_url = parse_url( site_url() );
$path = ( ! empty( $site_url['path'] ) ) ? $site_url['path'] : '';
$output .= "Disallow: $path/wp-admin/\n";
$output .= "Allow: $path/wp-admin/admin-ajax.php\n";
/**
* Filters the robots.txt output.
*
* @since 3.0.0
*
* @param string $output The robots.txt output.
* @param bool $public Whether the site is considered "public".
*/
echo apply_filters( 'robots_txt', $output, $public );
}
Thanks.