版本#1
以下内容似乎适用于“二十一五”主题:
/**
* Display the comment form via shortcode on singular pages
* Remove the default comment form.
* Hide the unwanted "Comments are closed" message with CSS.
*
* @see http://wordpress.stackexchange.com/a/177289/26350
*/
add_shortcode( \'wpse_comment_form\', function( $atts = array(), $content = \'\' )
{
if( is_singular() && post_type_supports( get_post_type(), \'comments\' ) )
{
ob_start();
comment_form();
print( \'<style>.no-comments { display: none; }</style>\' );
add_filter( \'comments_open\', \'__return_false\' );
return ob_get_clean();
}
return \'\';
}, 10, 2 );
在这里,我们只允许短代码在支持评论的单条帖子上显示评论表单。
在这里,我们使用CSS隐藏不需要的注释已关闭的消息。
版本#2
以下是另一种没有CSS的方法:
/**
* Display the comment form via shortcode on singular pages.
* Remove the default comment form.
* Hide the unwanted "Comments are closed" message through filters.
*
* @see http://wordpress.stackexchange.com/a/177289/26350
*/
add_shortcode( \'wpse_comment_form\', function( $atts = array(), $content = \'\' )
{
if( is_singular() && post_type_supports( get_post_type(), \'comments\' ) )
{
ob_start();
comment_form();
add_filter( \'comment_form_defaults\', \'wpse_comment_form_defaults\' );
return ob_get_clean();
}
return \'\';
}, 10, 2 );
function wpse_comment_form_defaults( $defaults )
{
add_filter( \'comments_open\', \'wpse_comments_open\' );
remove_filter( current_filter(), __FUNCTION__ );
return $defaults;
}
function wpse_comments_open( $open )
{
remove_filter( current_filter(), __FUNCTION__ );
return false;
}