在自定义发布类型上设置主菜单

时间:2012-12-03 作者:WebDevDude

我目前正在为一家汽车经销商开发一个网站,列出他们的库存。我已经设置了汽车作为一个自定义的职位类型。每个帖子都有子帖子(图库、功能、附件等)。

我想在所有页面上设置导航,如下所示:

<ul>
    <li><a href="/ford-escape-lt/gallery/">Gallery</a>
    <li><a href="/ford-escape-lt/features/">Features</a>
    <li><a href="/ford-escape-lt/accessories/">Accessories</a>
</ul>
只需创建一个像single car这样的模板就好了。然后在那里有菜单。问题是,如何将菜单的第一部分(/ford escape lt)替换为当前页面?是否有任何方法可以将类添加到当前页面项?

1 个回复
SO网友:Matthew Boynes

我也做过类似的事情,下面是我如何处理的。

首先,我没有使用子页面,而是将所有数据放在一个页面上,并将可能的“子”存储为posmeta。我的自定义帖子类型编辑页面中有7或8个编辑器。这使得WordPress管理更干净,编辑我的帖子也更容易,因为我没有在一个地方开始帖子,然后必须再创建7个页面并进行编辑。我不会包含该代码,因为它涵盖得很好elsewhere.

我通过重写标签导航页面。以下是我的功能。php文件(针对您的数据修改的所有示例代码):

add_action(\'init\', \'wpse_74829_rewrite_additions\');
function wpse_74829_rewrite_additions() {
    add_rewrite_tag( \'%section%\', \'(gallery|features|accessories)\' );
    add_rewrite_rule(\'^([^/]+)/(gallery|features|accessories)/?\', \'index.php?car=$matches[1]&section=$matches[2]\', \'top\');
}
接下来,我有了一个助手来根据节显示内容。

<?php
function wpse_74829_the_section( $section ) {
    $content = get_post_meta( get_the_ID(), $section, true );
    if ( $content ) {
        $content = str_replace( \']]>\', \']]&gt;\', $content );
        echo apply_filters( \'the_content\', $content );
    }
}
?>
以下是我的循环内部的内容:

<div class="entry-content">
    <?php
    switch ( $wp_query->query_vars[\'section\'] ) {
        case \'gallery\':
            wpse_74829_the_section( \'gallery\' );
            break;

        case \'features\':
            wpse_74829_the_section( \'features\' );
            break;

        case \'accessories\':
            wpse_74829_the_section( \'accessories\' );
            break;

        default:
            the_content();
            break;
    }
    ?>
</div>
最后,我的链接有一个助手:

function wpse_74829_the_section_url( $section ) {
    $url = get_permalink();
    if ( strpos( $url, \'?\') ) echo add_query_arg( \'section\', $section );
    else echo $url . $section . \'/\';
}
然后我可以链接到页面中的各个部分,比如,<?php wpse_74829_the_section_url( \'gallery\' ); ?>

结束

相关推荐

Wordpress Custom Menus Issue

在我的模板中,我使用这样的调用来输出一些自定义菜单:<?php wp_nav_menu(array(\'container_class\' => \'secondary-navigation\', \'theme_location\' => \'secondary\')); ?> 自从升级到WordPress 3.1.4后,我就可以获得完整的页面列表,而不是自定义菜单我看到修复程序(通过谷歌)说我应该添加以下内容来修复此问题:\'fallback_cb\' => f