我正在尝试在WordPress主题中向正文添加一个类,这样当页面上没有帖子时它就不会显示搜索栏。我现在在我的functions.php
中找到一个特定的页面,如果没有帖子的话。
<?php
add_filter( 'body_class', 'custom_class' );
function custom_class( $classes ) {
if(strpos($_SERVER['REQUEST_URI'], 'agent') !== false ){
$classes[] = 'noSearchBar';
}
if(!have_posts() ){
$classes[] = 'noSearchBar';
}
return $classes;
}
?>
适用于大多数网页,但在某些网页上,它使用的是其他模板,而不是像have_posts
这样调用帖子:
<?php
global $wp_query;
if ( have_posts() ) :
while ( have_posts() ) : the_post();
get_template_part('template-parts/property-for-listing');
endwhile;
wp_reset_postdata();
else:
?>
<h4><?php esc_html_e('Sorry No Results Found', 'houzez') ?></h4>
<?php
endif;
?>
它正是这样提出来的:
<?php
global $wp_query, $paged;
if(!$fave_prop_no){
$posts_per_page = 9;
} else {
$posts_per_page = $fave_prop_no;
}
$latest_listing_args = array(
'post_type' => 'property',
'posts_per_page' => $posts_per_page,
'paged' => $paged,
'post_status' => 'publish'
);
$latest_listing_args = apply_filters( 'houzez_property_filter', $latest_listing_args );
$latest_listing_args = houzez_prop_sort ( $latest_listing_args );
$wp_query = new WP_Query( $latest_listing_args );
if ( $wp_query->have_posts() ) :
while ( $wp_query->have_posts() ) : $wp_query->the_post();
get_template_part('template-parts/property-for-listing');
endwhile;
else:
get_template_part('template-parts/property', 'none');
endif;
?>
这使我的功能无效。 template-parts/property-none
中只有一行代码,它只是说其他文件是一样的。所以我不确定为什么其他模板不会添加正文类。
答案 0 :(得分:0)
你可以这样做,
<?php
add_filter( 'body_class', 'custom_class' );
function custom_class( $classes ) {
if ( is_single('post') ) {
$classes[] = 'SearchBar';
}else{
$classes[] = 'noSearchBar';
}
return $classes;
}
?>
以下示例适用于单个帖子页面。有关更多条件。visit
希望这会对你有所帮助。