apply_filters( 'comments_template', string $theme_template )

Filters the path to the theme template file used for the comments template.


Parameters

$theme_template string
The path to the theme template file.

Top ↑

More Information

The comments_template filter can be used to load a custom template form a plugin which replaces the theme’s default comment template.


Top ↑

Source

File: wp-includes/comment-template.php. View all references

$include = apply_filters( 'comments_template', $theme_template );


Top ↑

Changelog

Changelog
Version Description
1.5.1 Introduced.

Top ↑

User Contributed Notes

  1. Skip to note 1 content
    Contributed by Steven Lin

    Code example migrated from Codex:

    A plugin can register as a content filter with the code:

    <?php add_filter( "comments_template", "my_plugin_comment_template" ); ?>

    Where my_plugin_comment_template is the function WordPress should call when the comment_template() function is called on the theme. Note that the filter function the plugin defines must return the a full path to a template file or the resulting page will be blank.

    This is an example of loading a different comments template for a custom post type:

    <?php
    function my_plugin_comment_template( $comment_template ) {
         global $post;
         if ( !( is_singular() && ( have_comments() || 'open' == $post->comment_status ) ) ) {
            return;
         }
         if($post->post_type == 'business'){ // assuming there is a post type called business
            return dirname(__FILE__) . '/reviews.php';
         }
    }
    
    add_filter( "comments_template", "my_plugin_comment_template" );
    ?>

    The example code will load the template file reviews.php located in your plugins folder for CPT called business; otherwise, the code uses default template.

  2. Skip to note 2 content
    Contributed by justin_k

    This filter is broken/unworking on newer block themes, such as Twenty Twenty-Three.

    A replacement to i.e. disable the comments “template” (aka block) would now be:

    function wpdocs_remove_comment_template_part( $pre_render, $parsed_block ) {
        if ( 'core/comments' === $parsed_block['blockName'] ) {
            return '';
        }
    }
    add_filter('pre_render_block', 'wpdocs_remove_comment_template_part', 10, 2 );

You must log in before being able to contribute a note or feedback.