当类别为空时添加else行

时间:2014-01-23 12:39:24

标签: php wordpress

我正在使用此搜索工具在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(即上面输入的页面)..我希望它说找不到帖子,但它似乎没有收到回音“没有找到结果! “,它只是页面,但没有结果。

2 个答案:

答案 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,或在那里回复消息,类似的东西。

最佳选择实际取决于执行代码的位置和时间。这里需要对请求流程进行更多解释。