Wp_list_pages在输出时更改页面标题

时间:2011-12-08 13:42:49

标签: wordpress

我正在使用wp_list_pages在页面和子页面上创建子菜单。 一切正常

我的菜单看起来像     Parent, page title is Hello      Child,      Child,      Child,      etc

我正在尝试找到一种动态更改输出页面标题的方法。 在上面的例子中,我希望我的父页面显示GoodBye而不是Hello。

你可能会徘徊为什么我不只是将我的页面重命名为Goodbye。 这是因为我的设计中的页面标题以3种不同的格式显示 - 菜单标题Hello显示Welcome(可以通过WP菜单更改) - 页面标题显示正确的标题,即Hello

我需要我的左侧菜单才能显示再见....

希望这对某人有意义

THX

1 个答案:

答案 0 :(得分:1)

在页面上使用自定义字段...我们称之为sidebar_title

然后,您需要将wp_list_pages代码转换为自定义WordPress循环(如果您愿意,可能有一种方法可以使用get_pages来执行相同操作。

以下是一些侧栏代码,用于列出当前页面及其子页面,将the_title();替换为sidebar_title(如果存在)。这很丑陋......重点是向您展示如何访问自定义字段。

<?php
    //Get children of current page and display with custom fields. 
    //You will probably need to adjust this.
    $args=array(
      'post_parent' => $post->ID,
      'post_type' => 'page',
    );
    $my_query = null;
    $my_query = new WP_Query($args);
    if( $my_query->have_posts() ) {
    ?>
    <ul>
    <?php 
        // Print parent with sidebar_title, if it exists
        $sidebar_title = get_post_meta($post->ID, 'sidebar_title', true); 
        if ($sidebar_title != ''){ ?>
            <li><a href="<?php the_permalink() ?>"><?php echo $sidebar_title;?></a></li>
        <?php } else { ?>
            <li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
        <?php } ?>
    <?php
      // Print each child page with sidebar_title, if it exists
      while ($my_query->have_posts()) : $my_query->the_post(); ?>
        <?php 
            $sidebar_title = get_post_meta($post->ID, 'sidebar_title', true); 
            echo $sidebar_title;
            if ($sidebar_title != ''){ ?>
                <li><a href="<?php the_permalink() ?>"><?php echo $sidebar_title;?></a></li>
            <?php } else { ?>
            <li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
            <?php } ?>
       <?php endwhile; } ?>
       </ul>
    <?php wp_reset_query();?>