定义了特定 post_type 的帖子中的页面导航在 Wordpress 中不起作用

Posted

技术标签:

【中文标题】定义了特定 post_type 的帖子中的页面导航在 Wordpress 中不起作用【英文标题】:Page Navigation Within a Post with Specific post_type defined not working in Wordpress 【发布时间】:2011-04-13 12:39:58 【问题描述】:

http://lakers.sonikastudios.com/gallery/sample-gallery-post-1/

那篇文章有几个页面使用了 Wordpress 的 快速标签。这篇文章也是一个自定义的 post_type.. 在主题模板中的 functions.php 中使用以下代码。

add_action( 'init', 'create_post_type' );
    function create_post_type() 
        register_post_type( 'gallery',
            array(
                'labels' => array(
                'name' => __( 'Galleries' ),
                'singular_name' => __( 'Gallery' )
            ),
            'public' => true,
            'supports' => array('title', 'editor', 'thumbnail', 'excerpt', 'custom-fields', 'comments')
            )
        );

使用此代码,我设法让自定义帖子类型出现在管理部分就好了。我在那里添加了一篇新文章,带有翻页器..

所以使用 wp_link_pages() 函数,我得到了翻页功能。但它仅适用于类别下的常规帖子,但不适用于定义为“画廊”post_type 的帖子。例如,此页面http://lakers.sonikastudios.com/editorials/catching-the-buss-to-the-hall-of-fame/3/ 与帖子中的分页配合得很好。

我没有使用任何影响帖子显示方法或导航的插件,我也没有弄乱 .htaccess 文件 - 无论 Wordpress 写什么,我都得到了。

任何帮助都会很棒..该网站几乎准备就绪,我们遇到了这个瓶颈,这让我很生气!

我正在使用最新版本的 Wordpress,并开始使用 Whiteboard 主题(为 WP3 制作的新主题)进行开发。 ]

更新: gallery.php(通过页面模块分配以显示 post_type“画廊” - 我确认这是加载画廊 post_type 帖子时加载的文件)

<?php
/*
Template Name: Gallery
*/
?>

<?php get_header();

$exclude = array();

?>
<div class="grid_11" id="mainbar">



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

    $exclude[]=get_the_ID();
    ?>
            <div id="post-<?php the_ID(); ?>" <?php post_class('grid_11 alpha omega'); ?>>
                <h2><a href="<? the_permalink(); ?>" title="<? the_title();?>"><? the_title();?></a></h2>
                <div class="social_media_balloons">
                <?
                if (function_exists('fbshare_manual')) echo fbshare_manual();
                ?>
                <?
                if (function_exists('tweetmeme')) echo tweetmeme();
                ?>
                </div>
                    <?
                    $author_gravatar = get_gravatar(get_the_author_meta('user_email'));
                    ?>
                    <img src="<? echo $author_gravatar;?>" class="alignleft" />
            <?
            echo posted_by_and_category();

            ?>

                    <div class="grid_11 alpha omega">

                        <?php the_content(); ?>
                        <div id="single_article_selectors">

                        <?php wp_link_pages('before=<div class="single_article_selector">&after=</div>'); ?>
                        <?php wp_link_pages('before=<div class="single_article_selector">&after=</div>&next_or_number=next'); ?>

                        </div>

                        <div class="grid_11 alpha omega" id="social_media_links">
                        <div class="grid_5 alpha">
                            <p><a href="http://www.twitter.com/LakersNation" target="_blank"><img src="/images/twittericon.jpg"    class="alignleft">Follow Lakers Nation </a></p>
                            <p><a href="http://feeds.feedburner.com/LakersNation" target="_blank"><img src="/images/rssicon.jpg"    class="alignleft">Subscribe to Lakers Nation</a></p>
                        </div>
                        <div class="grid_5 omega">
                            <p><a href="http://www.facebook.com/lakersnation" target="_blank"><img src="/images/fbicon.jpg"   class="alignleft">Become a Fan on Facebook</a></p>
                            <p><a href="http://itunes.apple.com/us/app/app-of-l-nation/id349346678?mt=8" target="_blank"><img src="/images/iphoneicon.png"    class="alignleft">Download our Free iPhone App</a></p>
                        </div>
                    </div>


                        <div class="shadow_divider"></div>
                    </div><!--#post-content-->

                    <!-- If a user fills out their bio info, it's included here -->
                    <div id="post-author" class="grid_11 alpha omega">
                        <h3>Written by <?php the_author_posts_link() ?></h3>
                        <div id="author-gravatar">
                            <!-- This avatar is the user's gravatar (http://gravatar.com) based on their administrative email address -->
                            <?php echo get_avatar( $curauth->user_email, $default = '<path_to_url>' ); ?>
                        </div><!--#author-gravatar -->
                        <div id="authorDescription">
                            <?php the_author_meta('description') ?> 
                            <div id="author-link">
                                <p>View all posts by: <?php the_author_posts_link() ?></p>

                            </div><!--#author-link-->
                        </div><!--#author-description -->
                    </div><!--#post-author-->

                </div><!-- #post-## -->

                <div class="grid_11 alpha omega next_prev_links">
                    <div class="grid_3 alpha">
                        <p>
                            <?php previous_post_link('%link', '&laquo; Previous post') ?>
                        </p>
                    </div><!--.older-->
                    <div class="grid_3 omega" style="float:right; text-align:right;">
                        <p>
                            <?php next_post_link('%link', 'Next Post &raquo;') ?>
                        </p>
                    </div><!--.older-->
                </div><!--.newer-older-->

                <?php comments_template( '', true ); ?>

    <?php endwhile; ?><!--end loop-->
</div><!--#content-->
<?php get_sidebar(); ?>
<?php get_footer(); ?>

single.php(默认为常规帖子展示模板..)

<?php get_header();

$dirpath = str_replace(get_bloginfo('url'), '',get_bloginfo('template_directory'));
?>
<div class="grid_11" id="mainbar">



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

    $exclude[]=get_the_ID();
    ?>

            <div id="post-<?php the_ID(); ?>" <?php post_class('grid_11 alpha omega'); ?>>

            <?
            echo posted_by_single();
            ?>
            <div class="grid_11 alpha omega">
                <div id="single_post_title">
                <h1><a href="<? the_permalink(); ?>" title="<? the_title();?>"><? the_title();?></a></h1>

                </div>
                <div class="social_media_balloons">
                <?
                if (function_exists('fbshare_manual')) echo fbshare_manual();
                ?>
                <?
                if (function_exists('tweetmeme')) echo tweetmeme();
                ?>
                </div>

                <div class="grid_11 alpha omega">

                    <?php the_content(); ?>
                    <div id="single_article_selectors">

                    <?php wp_link_pages('before=<div class="single_article_selector">&after=</div>'); ?>
                    <?php wp_link_pages('before=<div class="single_article_selector">&after=</div>&next_or_number=next'); ?>

                    </div>

                    <div class="grid_11 alpha omega" id="social_media_links">
                        <div class="grid_5 alpha">
                            <p><a href="http://www.twitter.com/LakersNation" target="_blank"><img src="/images/twittericon.jpg"    class="alignleft">Follow Lakers Nation </a></p>
                            <p><a href="http://feeds.feedburner.com/LakersNation" target="_blank"><img src="/images/rssicon.jpg"    class="alignleft">Subscribe to Lakers Nation</a></p>
                        </div>
                        <div class="grid_5 omega">
                            <p><a href="http://www.facebook.com/lakersnation" target="_blank"><img src="/images/fbicon.jpg"   class="alignleft">Become a Fan on Facebook</a></p>
                            <p><a href="http://itunes.apple.com/us/app/app-of-l-nation/id349346678?mt=8" target="_blank"><img src="/images/iphoneicon.png"    class="alignleft">Download our Free iPhone App</a></p>
                        </div>
                    </div>

                    <div class="shadow_divider"></div>
                </div><!--#post-content-->


            </div><!-- #post-## -->



                <div class="grid_11 alpha omega next_prev_links">
                    <div class="grid_3 alpha">
                        <p>
                            <?php previous_post_link('%link', '&laquo; Previous post') ?>
                        </p>
                    </div><!--.older-->
                    <div class="grid_3 omega" style="float:right; text-align:right;">
                        <p>
                            <?php next_post_link('%link', 'Next Post &raquo;') ?>
                        </p>
                    </div><!--.older-->
                </div><!--.newer-older-->
            <div class="grid_11 alpha omega" id="comments_container">
            <?php comments_template( '', true ); ?>
            </div>
        </div>
    <?php endwhile; ?><!--end loop-->
</div><!--#mainbar-->
<?php get_sidebar(); ?>
<?php get_footer(); ?>

【问题讨论】:

难以置信。没人有这个答案吗?我尝试了 WP 论坛、Google 和 Stack Overflow。一定有人在那里! 你为什么不尝试在WordPress Answers 发布这个。新的 StackExchange 测试版网站之一。 您可以发布用于单个自定义帖子类型的模板吗?和普通帖子使用的single.php一样吗? 已添加。我什至不知道有一个 WP 答案网站。我可能会这样做。 【参考方案1】:

您遇到的问题是使用自定义帖子类型进行分页。有一个 good thread on WordPress.org,其中包含一些示例和解决方案,用于使其正常工作。

***已经回答了类似的问题


编辑:

我无法使用您提供的代码重现错误。

见:Custom Post Type Pagination Test

为了创建测试,我采取了以下步骤:

    从主题主页上传并安装白板主题

    添加了提供给functions.php的示例代码以创建帖子类型

    复制提供的“图库模板”代码并将其重命名为single-gallery.php

(在显示单个帖子类型页面时,模板层次结构查找 single-PostType.php,然后查找 single.php)

    通过单击库添加新创建一个新库

    使用添加媒体插入 4 张图片

    在每张图片之间插入&lt;!--nextpage--&gt;

    保存的帖子和更新的固定链接

测试环境

WordPress 版本:3.0.1 PHP 版本:5.2.13 主题:白板 固定链接:/%year%/%monthnum%/%postname%/

【讨论】:

谢谢 - 但是您的 Wordpress 线程与许多帖子的分页有关,而不是在由 快速标签划分的帖子中进行分页。与我的问题完全不同。 所以。我发现的教程在其过程中很糟糕。引导到模板文件的正确方法是简单地使用 single-gallery.php 文件名,而不是设置页面并链接模板等。

以上是关于定义了特定 post_type 的帖子中的页面导航在 Wordpress 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

通过存档页面上的自定义字段查询自定义帖子类型

为 WP 中的特定页面自定义设置“当前菜单项”类

wordpress中自定义帖子类型的分页

从 Wordpress 取消注册自定义帖子类型

自定义帖子类型的无限帖子

Wordpress - 按“post_type”检索所有帖子,然后按分类过滤