在博客页面上显示页面标题

时间:2014-05-30 作者:user1452062

我为我的帖子创建了一个页面和一个主页。php的结构。

我想在帖子顶部显示页面名称,但结果总是最新的帖子。

我的代码:

<?php get_header(); ?>
<section id="primary-content" class="col-md-9">
    <?php the_title(); ?>
    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

        <div class="post">
            <h2><a href="<?php the_permalink(); ?>"><?php the_title();?></a></h2>
            <div class="byline">by <?php the_author_posts_link(); ?> on <a href="<?php the_permalink(); ?>"><?php the_time( \'l F d, Y\'); ?></a></div>
            <?php the_content(\'Read More...\'); ?>
        </div>
    <?php endwhile; else: ?>
        <p><?php _e(\'No posts were found. Sorry!\'); ?></p>
    <?php endif; ?>

    <div class="navi">
        <div class="right">
        <?php previous_posts_link(\'Previous\'); ?> / <?php
          next_posts_link(\'Next\'); ?>
      </div>
    </div>

</section>

<?php get_sidebar(); ?>

<?php get_footer(); ?>
问题出在哪里?是否可以在博客页面上显示页面名称?

2 个回复
最合适的回答,由SO网友:Matt Royal 整理而成

对页面标题的调用在循环之外,因此您需要改用此函数:

<?php echo get_the_title(); ?> 
以下是更新的代码:

<?php get_header(); ?>
<section id="primary-content" class="col-md-9">

    <?php echo get_the_title(); ?> 

    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

        <div class="post">
            <h2><a href="<?php the_permalink(); ?>"><?php the_title();?></a></h2>
            <div class="byline">by <?php the_author_posts_link(); ?> on <a href="<?php the_permalink(); ?>"><?php the_time( \'l F d, Y\'); ?></a></div>
            <?php the_content(\'Read More...\'); ?>
        </div>
    <?php endwhile; else: ?>
        <p><?php _e(\'No posts were found. Sorry!\'); ?></p>
    <?php endif; ?>

    <div class="navi">
        <div class="right">
        <?php previous_posts_link(\'Previous\'); ?> / <?php
          next_posts_link(\'Next\'); ?>
      </div>
    </div>

</section>

<?php get_sidebar(); ?>

<?php get_footer(); ?>

SO网友:s_ha_dum

您正在使用the_title() 在环路之外,这在技术上是不正确的。它是一个“循环”标记,取决于global 变量$post 它在循环的每次迭代中都设置为当前帖子,但会预先填充循环中的第一篇帖子,这就是您所看到的。要获取页面本身的标题,您需要:

$qobj = get_queried_object();
echo $qobj->post_title;
但要知道get_queried_object() 将返回不同的对象,或者根本不返回对象,具体取决于您所在的页面。您需要将代码包装在条件中以避免错误。

if (is_singular()) {
    $qobj = get_queried_object();
    echo $qobj->post_title;
}
或。。。

$qobj = get_queried_object();
if(isset($qobj->post_title)) {
    echo $qobj->post_title;
}

结束

相关推荐

我如何才能信任Switch_to_Blog()?

当我打电话时switch_to_blog() 有了博客id,我不知道这个博客是否真的存在。函数始终返回TRUE.测试用例:switch_to_blog( PHP_INT_MAX ); $post = get_post( 1 ); restore_current_blog(); 这将导致向用户公开的数据库错误。我怎样才能防止这种情况?真实世界用例我是Multilingual Press. 当用户翻译帖子时,会出现如下屏幕:现在可能会发生以下情况:她成功地保存了帖子,并继续翻译帖子&