まだコメントがない場合、ウィジェットを完全に隠す方法はありますか?
私はfunctions.phpファイルにphp関数を追加することを考えていました - それは可能な方法ですか?もしそうなら、誰かが提案を提供できますか?
コメントウィジェット用のフックがあるかどうかはわかりませんが、コメントがあるかどうかを確認するための条件付きでテンプレート内のウィジェットを呼び出すことができます。 functions.phpでもこれを行うことができるでしょう。
何かのようなもの:
$num_comments = get_comments_number();
if ( $num_comments > 0 ) {
the_widget( 'WP_Widget_Recent_Comments' );
} else {
// do something else
}
これは、 wp_get_sidebars_widgets()
関数の_(dynamic_sidebar()
関数内の と呼ばれる)からの sidebars_widgets
フィルターを使用するという考えです。
/**
* Remove the recent comments widgets from a given sidebar (index)
*
* @link http://wordpress.stackexchange.com/q/151361/26350
*/
! is_admin() && add_filter( 'sidebars_widgets', function( $sidebars_widgets ) {
// ------------------------
// Edit this to your needs:
$sidebar_index = 'sidebar-1';
$find = 'recent-comments';
// ------------------------
if( isset( $sidebars_widgets[$sidebar_index] ) && 0 == get_comments_number() )
{
foreach( $sidebars_widgets[$sidebar_index] as $key => $widget )
{
if( false !== stripos( $widget, $find ) )
unset( $sidebars_widgets[$sidebar_index][$key] );
}
}
return $sidebars_widgets;
}, PHP_INT_MAX );
$sidebar_index
と$find
を必要に応じて変更することを忘れないでください。
単一のサイドバーをターゲットにする代わりに、すべてのサイドバーをループすることもできます。必要に応じてコードスニペットを調整できると確信しています。