1

这来自我正在处理的 wordpress 网站,但不是 WP 特定的问题。

我有一个 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>但我宁愿清理它并且在主页上什么也不创建。

我怎样才能最好地修改上面的代码来实现这一点?

4

2 回答 2

3

你需要移动你的代码。如果您不希望在<div><h1>首页上打印前导,if请在此之前移动检查。添加一个else然后打印的地方<div><h1>,大的 if/else 代码块和关闭</div>等。

还阅读了关于切换进出 PHP 代码和 html 模式的内容
尽管如此,最好的解释可能是仅仅显示:

<?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
     }
?>

这里唯一有趣的是您将 html+code blob 括在elses左大括号{和右}大括号之间。

于 2012-10-16T03:51:10.900 回答
0

将你的回声放入一个变量而不是打印它们,然后在你的 if 语句之后

回声($var =='')?'' : ''.$var.'';

最后 2 组单引号之间的 HTML 标签

于 2012-10-16T03:46:15.193 回答