2012-10-16 74 views
0

這是來自我正在處理的一個WordPress站點,但不是一個WP特定的問題。用PHP編寫div if/else語句

我有一個if/else PHP語句來檢查用戶是否正在查看我的網站的主頁。如果他們正在查看主頁,我希望代碼不做任何事情。如果它們不是,我希望它在配置中顯示頁面標題。

我目前擁有的代碼是:

<div class="page-header"> 
    <h1> 
    <?php 
    if (is_front_page()){ 
     echo ' '; 
    } 
    elseif (is_home()) { 
     if (get_option('page_for_posts', true)) { 
      echo get_the_title(get_option('page_for_posts', true)); 
     } else { 
      _e('Latest Posts', 'roots'); 
     } 
     } elseif (is_archive()) { 
     $term = get_term_by('slug', get_query_var('term'), get_query_var('taxonomy')); 
     if ($term) { 
      echo $term->name; 
     } elseif (is_post_type_archive()) { 
      echo get_queried_object()->labels->name; 
     } elseif (is_day()) { 
      printf(__('Daily Archives: %s', 'roots'), get_the_date()); 
     } elseif (is_month()) { 
      printf(__('Monthly Archives: %s', 'roots'), get_the_date('F Y')); 
     } elseif (is_year()) { 
      printf(__('Yearly Archives: %s', 'roots'), get_the_date('Y')); 
     } elseif (is_author()) { 
      global $post; 
      $author_id = $post->post_author; 
      printf(__('Author Archives: %s', 'roots'), get_the_author_meta('display_name', $author_id)); 
     } else { 
      single_cat_title(); 
     } 
     } elseif (is_search()) { 
     printf(__('Search Results for %s', 'roots'), get_search_query()); 
     } elseif (is_404()) { 
     _e('File Not Found', 'roots'); 
     } else { 
     the_title(); 
     } 
    ?> 
    </h1> 
</div> 

我知道echo ' ';可能是路要走,但我絕對PHP初學者!目前這會創建一個空的<div><h4>標籤,但我寧願將其清理乾淨,並在主頁上根本不創建任何內容。

如何才能最好地修改上面的代碼來實現這一目標?

回答

2

您需要移動代碼。如果您不希望在首頁上打印前導<div><h1>,請在此之前移動if檢查。添加else,你然後打印<div><h1>,大的if/else代碼BLOB,期末</div>

switching in and out of PHPs code and html mode又讀了。
雖然,這可能是最好的只顯示說明:

<?php 
    if (is_front_page()){ 
     echo ' '; 
    } 
    else { 
?> 
<div class="page-header"> 
    <h1> 
    <?php 

    if (is_home()) { 
     if (get_option('page_for_posts', true)) { 
      echo get_the_title(get_option('page_for_posts', true)); 

     /* 

      ... 

     */ 

     } else { 
     the_title(); 
     } 
    ?> 
    </h1> 
</div> 
<?php 
    } 
?> 

這裏唯一有趣的事情是,你附上else開幕{}大括號之間的HTML代碼+一滴。

+1

爲什麼不刪除'else'並使用'if(!is_front_page()){'? OP只需要在該頁面上不需要任何內容​​,因此回顯空間是不必要的。 – Eric

+0

OP看起來很困惑,所以我放棄了否定,也保留了冗餘的空回聲。它只是展示了結構。 – mario

+0

哈哈感謝這個傢伙。我其實想到做這樣的事情,但並不認爲你可以在html if/else語句中查找html。 'if(!is_front_page()){'似乎夠簡單,所以我會用它。乾杯! – Jascination

0

把你的回聲到一個變量,而不是將它們打印的,然後經過你的if語句做

回聲(是$ var ==「」)? '':''。$ var。'';

最後2組單引號之間的Html標籤

+0

-1/2:這不是一個非常可讀的方式來做到這一點。 –