Main Loop未在自定义博客模板页面中启动

时间:2011-01-25 作者:janoChen

我为我页面的博客部分制作了一个自定义模板。我甚至将post page设置为Blog.

我创建了一个名为“页面内容”的自定义帖子类型,并在#feature 分区,但未显示主要帖子(写在帖子面板中)(#blog 部门)

有什么建议可以解决这个问题吗?

编辑:我刚刚在webkit inspector中看到:

Fatal error: Cannot use object of type WP_Query as array in /home/alex/www/wpa/wp-includes/query.php on line 2555
(我使用的是Starkers主题)

代码:

home.php:

   <?php
    /**
     * Template Name: Blog
     * @package WordPress
     * @subpackage Prominent
     * @since Prominent 1.0
     */
    get_header(); ?>
    <div class="shadow-top">
        <!-- Shadow at the top of the slider -->
    </div>
    <div id="feature">
        <div class="container">
            <div id="slider-wrapper">
                <div id="slider">
                    <?php // Retrive custom post type with a custom taxonomy assigned to it
                    $posts = new WP_Query(\'post_type=page_content&page_sections=Slider (Front Page)&order=ASC\') ?>
                    <?php while ( $posts->have_posts() ) : $posts->the_post(); ?>
                        <?php the_content(); ?>
                    <?php endwhile; ?>
                    <?php wp_reset_query(); ?>
                </div>
                <div class="shadow-slider">
                    <!-- Shadow at the bottom of the slider -->
                </div>
            </div><!-- #slider-wrapper -->
        </div><!-- .container -->
    </div><!-- #featured -->
    <div class="shadow-bottom">
        <!-- Shadow at the bottom of the slider -->
    </div>
    <div id="content">
        <div class="container">
            <div id="blog">
                <?php // Retrieve blog entries (The Loop)
                get_template_part( \'loop\', \'index\' ); ?>
            </div>
        </div><!-- .container -->
    </div><!-- #content-bottom -->
    <?php get_footer(); ?>
索引。php:

<?php
/**
 * The main template file.
 *
 * This is the most generic template file in a WordPress theme
 * and one of the two required files for a theme (the other being style.css).
 * It is used to display a page when nothing more specific matches a query.
 * E.g., it puts together the home page when no home.php file exists.
 * Learn more: http://codex.wordpress.org/Template_Hierarchy
 *
 * @package WordPress
 * @subpackage Starkers
 * @since Starkers 3.0
 */

get_header(); ?>

            <?php
            /* Run the loop to output the posts.
             * If you want to overload this in a child theme then include a file
             * called loop-index.php and that will be used instead.
             */
            get_template_part( \'loop\', \'index\' );
            ?>

<?php get_sidebar(); ?>
<?php get_footer(); ?>
循环。php:

<?php
/**
 * The loop that displays posts.
 *
 * The loop displays the posts and the post content.  See
 * http://codex.wordpress.org/The_Loop to understand it and
 * http://codex.wordpress.org/Template_Tags to understand
 * the tags used in it.
 *
 * This can be overridden in child themes with loop.php or
 * loop-template.php, where \'template\' is the loop context
 * requested by a template. For example, loop-index.php would
 * be used if it exists and we ask for the loop with:
 * <code>get_template_part( \'loop\', \'index\' );</code>
 *
 * @package WordPress
 * @subpackage Starkers
 * @since Starkers 3.0
 */
?>

<?php /* Display navigation to next/previous pages when applicable */ ?>
<?php if ( $wp_query->max_num_pages > 1 ) : ?>
        <?php next_posts_link( __( \'&larr; Older posts\', \'twentyten\' ) ); ?>
        <?php previous_posts_link( __( \'Newer posts &rarr;\', \'twentyten\' ) ); ?>
<?php endif; ?>

<?php /* If there are no posts to display, such as an empty archive page */ ?>
<?php if ( ! have_posts() ) : ?>
        <h1><?php _e( \'Not Found\', \'twentyten\' ); ?></h1>
        <p><?php _e( \'Apologies, but no results were found for the requested archive. Perhaps searching will help find a related post.\', \'twentyten\' ); ?></p>
        <?php get_search_form(); ?>

<?php endif; ?>

<?php
    /* Start the Loop.
     *
     * In Twenty Ten we use the same loop in multiple contexts.
     * It is broken into three main parts: when we\'re displaying
     * posts that are in the gallery category, when we\'re displaying
     * posts in the asides category, and finally all other posts.
     *
     * Additionally, we sometimes check for whether we are on an
     * archive page, a search page, etc., allowing for small differences
     * in the loop on each template without actually duplicating
     * the rest of the loop that is shared.
     *
     * Without further ado, the loop:
     */ ?>
<?php while ( have_posts() ) : the_post(); ?>

<?php /* How to display posts in the Gallery category. */ ?>

    <?php if ( in_category( _x(\'gallery\', \'gallery category slug\', \'twentyten\') ) ) : ?>
            <h2><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( \'Permalink to %s\', \'twentyten\' ), the_title_attribute( \'echo=0\' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>
            <?php twentyten_posted_on(); ?>

<?php if ( post_password_required() ) : ?>
                <?php the_content(); ?>
<?php else : ?>
<?php
    $images = get_children( array( \'post_parent\' => $post->ID, \'post_type\' => \'attachment\', \'post_mime_type\' => \'image\', \'orderby\' => \'menu_order\', \'order\' => \'ASC\', \'numberposts\' => 999 ) );
    $total_images = count( $images );
    $image = array_shift( $images );
    $image_img_tag = wp_get_attachment_image( $image->ID, \'thumbnail\' );
?>
                    <a href="<?php the_permalink(); ?>"><?php echo $image_img_tag; ?></a>

                <p><?php printf( __( \'This gallery contains <a %1$s>%2$s photos</a>.\', \'twentyten\' ),
                        \'href="\' . get_permalink() . \'" title="\' . sprintf( esc_attr__( \'Permalink to %s\', \'twentyten\' ), the_title_attribute( \'echo=0\' ) ) . \'" rel="bookmark"\',
                        $total_images
                    ); ?></p>

                <?php the_excerpt(); ?>
<?php endif; ?>

                <a href="<?php echo get_term_link( _x(\'gallery\', \'gallery category slug\', \'twentyten\'), \'category\' ); ?>" title="<?php esc_attr_e( \'View posts in the Gallery category\', \'twentyten\' ); ?>"><?php _e( \'More Galleries\', \'twentyten\' ); ?></a>
                |
                <?php comments_popup_link( __( \'Leave a comment\', \'twentyten\' ), __( \'1 Comment\', \'twentyten\' ), __( \'% Comments\', \'twentyten\' ) ); ?>
                <?php edit_post_link( __( \'Edit\', \'twentyten\' ), \'|\', \'\' ); ?>

<?php /* How to display posts in the asides category */ ?>

    <?php elseif ( in_category( _x(\'asides\', \'asides category slug\', \'twentyten\') ) ) : ?>

        <?php if ( is_archive() || is_search() ) : // Display excerpts for archives and search. ?>
            <?php the_excerpt(); ?>
        <?php else : ?>
            <?php the_content( __( \'Continue reading &rarr;\', \'twentyten\' ) ); ?>
        <?php endif; ?>

                <?php twentyten_posted_on(); ?>
                |
                <?php comments_popup_link( __( \'Leave a comment\', \'twentyten\' ), __( \'1 Comment\', \'twentyten\' ), __( \'% Comments\', \'twentyten\' ) ); ?>
                <?php edit_post_link( __( \'Edit\', \'twentyten\' ), \'| \', \'\' ); ?>

<?php /* How to display all other posts. */ ?>

    <?php else : ?>
            <h2><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( \'Permalink to %s\', \'twentyten\' ), the_title_attribute( \'echo=0\' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>
            <?php twentyten_posted_on(); ?>

    <?php if ( is_archive() || is_search() ) : // Only display excerpts for archives and search. ?>
            <?php the_excerpt(); ?>
    <?php else : ?>
            <?php the_content( __( \'Continue reading &rarr;\', \'twentyten\' ) ); ?>
            <?php wp_link_pages( array( \'before\' => \'\' . __( \'Pages:\', \'twentyten\' ), \'after\' => \'\' ) ); ?>
    <?php endif; ?>

                <?php if ( count( get_the_category() ) ) : ?>
                    <?php printf( __( \'Posted in %2$s\', \'twentyten\' ), \'entry-utility-prep entry-utility-prep-cat-links\', get_the_category_list( \', \' ) ); ?>
                    |
                <?php endif; ?>
                <?php
                    $tags_list = get_the_tag_list( \'\', \', \' );
                    if ( $tags_list ):
                ?>
                    <?php printf( __( \'Tagged %2$s\', \'twentyten\' ), \'entry-utility-prep entry-utility-prep-tag-links\', $tags_list ); ?>
                    |
                <?php endif; ?>
                <?php comments_popup_link( __( \'Leave a comment\', \'twentyten\' ), __( \'1 Comment\', \'twentyten\' ), __( \'% Comments\', \'twentyten\' ) ); ?>
                <?php edit_post_link( __( \'Edit\', \'twentyten\' ), \'| \', \'\' ); ?>

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

    <?php endif; // This was the if statement that broke the loop into three parts based on categories. ?>

<?php endwhile; // End the loop. Whew. ?>

<?php /* Display navigation to next/previous pages when applicable */ ?>
<?php if (  $wp_query->max_num_pages > 1 ) : ?>
                <?php next_posts_link( __( \'&larr; Older posts\', \'twentyten\' ) ); ?>
                <?php previous_posts_link( __( \'Newer posts &rarr;\', \'twentyten\' ) ); ?>
<?php endif; ?>

2 个回复
SO网友:janoChen

似乎是变量$posts 已在中使用query.php 文件(不太确定)。

改变#posts$custom_posts 解决了这个问题。

SO网友:Rarst

这个line referenced in that error 非常简单-它将检索到的帖子数组中的下一篇帖子分配给当前帖子的字段。

$this->post = $this->posts[$this->current_post];
根据错误而不是数组WP_Query->posts 字段包含WP_Query 由于某种原因,对象(或引用对象)。我不太明白为什么会发生这种情况,这不是一种正常的查询机制。

它是否适用于从模板中删除的自定义特色创意?我的意思是,你能肯定地说,你的自定义二次循环是或不是错误的原因吗?

结束

相关推荐

Paging in a sidebar mini loop

我切换到了另一个主题,并决定用其中的一些默认代码制作一个小部件,在自定义循环中显示我的美味帖子、推特帖子、su帖子和youtube视频(不包括主循环中的这些类别)。但是现在。。。分页不再工作。我制作了这个小部件:// =============================== EDL Sidebar Posts Widget ====================================== class SidebarPosts extends WP_Widget { &#x