我正在使用此搜索工具在wordpress网站上工作:
http://spruce.it/noise/two-category-dropdown-search-filter-in-wordpress/
一切正常,但在最后几行中,我想要包含一行代表,如果两个类别中没有帖子,例如在布赖顿的牙医,以显示'没有帖子'的消息。我的PHP非常有限,我尝试过的东西不起作用。我希望在else语句之前添加它,但这可能不正确。任何指针都非常赞赏!
<?php else:
if ($_GET['category'] != -1){
header('Location:'.get_category_link($_GET['category']));
} elseif ($_GET['city'] != -1){
header('Location:'.get_category_link($_GET['city']));
} else{
header('Location: http://www.test.com');
}
endif;?>
附加编辑:这是整页内容14/01/14:
<?php
require_once('../../../wp-blog-header.php');
if (($_GET['category'] != -1) && ($_GET['city'] != -1)):
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts(
array(
'orderby' => 'date',
'order' => 'DESC',
'paged' => $paged,
'posts_per_page' => 6,
'category__and' => array(
$_GET['city'],
$_GET['category']
),
)
);
?>
<?php get_header(); ?>
<div id="main">
<div id="content" class="wide">
<?php if (have_posts()) : ?>
<h1><?php echo get_cat_name($_GET['category']) ?>,
<?php echo get_cat_name($_GET['city']) ?></h1>
<?php remove_filter ('the_content1', 'wpautop'); ?>
<h2>These <?php echo get_cat_name($_GET['category']) ?> can help you. They service businesses in <?php echo get_cat_name($_GET['city']) ?><?php if( is_category('exeter') ) echo get_page_content(585);
elseif( is_category('birmingham') ) echo get_page_content(587);
elseif( is_category('') ) echo '.';?>
</h2>
<ul id="search1"><?php while (have_posts()) : the_post(); ? >
<a href="http://www.<?php echo get_post_meta($post->ID, 'URL', true); ?>" title="Go to the URL: www.<?php echo get_post_meta($post->ID, 'URL', true); ?>" target="_blank">
<li id="<?php echo get_post_meta($post->ID, 'AdSize', true); ?>"><h5><?php the_title(); ?></h5>
<?php the_post_thumbnail( $size, $attr ); ?>
<div class="doubler"><?php the_content(''); ?>
<p>Tel: <?php echo get_post_meta($post->ID, 'Telephone', true); ?><br />Website: www.<?php echo get_post_meta($post->ID, 'URL', true); ?></p></div>
</li>
</a>
<?php endwhile; ?></ul>
<?php endif; ?>
<div class="localhelp">
<h1>Find Local Help</h1>
<form method="get" id="sponsorsearchform" action="<?php bloginfo('template_url');? >/findsponsor.php" >
<?php wp_dropdown_categories('show_option_none=Select a Category&hide_empty=1&child_of=14&orderby=name&name=category'); ?>
<?php wp_dropdown_categories('show_option_none=Select a Location&hide_empty=1&child_of=13&orderby=name&name=city'); ?>
<input type="submit" value="Search"/>
</form>
</div>
<hr />
<?php comments_template(); ?>
</div><!--end content-->
</div><!--end main-->
<?php get_footer(); ?>
<?php else:
if ($_GET['category'] != -1){
$currentCat = get_category($_GET['category']);
if ($currentCat->category_count > 0) {
header('Location:'.get_category_link($_GET['category']));
} else {
echo "No result found!";
}
} elseif ($_GET['city'] != -1){
$currentCity = get_category($_GET['city']);
if ($currentCity->category_count > 0) {
header('Location:'.get_category_link($_GET['city']));
} else {
echo "No result found!";
}
} else{
header('Location: http://www.test.com');
}
endif;?>
当任何一个类别中都没有帖子时会显示findsponsor.php(即上面输入的页面)..我希望它说找不到帖子,但它似乎没有收到回音“没有找到结果! “,它只是页面,但没有结果。
答案 0 :(得分:1)
您可以通过get_category使用category_count
属性来获取帖子计数;
<?php else:
if ($_GET['category'] != -1){
$currentCat = get_category($_GET['category']);
if ($currentCat->category_count > 0) {
header('Location:'.get_category_link($_GET['category']));
} else {
echo "No result found!";
}
} elseif ($_GET['city'] != -1){
$currentCity = get_category($_GET['city']);
if ($currentCity->category_count > 0) {
header('Location:'.get_category_link($_GET['city']));
} else {
echo "No result found!";
}
} else{
header('Location: http://www.test.com');
}
endif;?>
答案 1 :(得分:0)
您的代码仅检查是否找到了类别或城市ID。它不会检查其中一个类别中是否有任何帖子。您需要添加一些代码来检查(计算该特定类别中的帖子)。
或者,如果您已经足够测试是否找到“有效”类别/城市ID,只需更改else
语句中的行(重定向到主页)并将其重定向到'找不到帖子'-page,或在那里回复消息,类似的东西。
最佳选择实际取决于执行代码的位置和时间。这里需要对请求流程进行更多解释。