自定义Wordpress以在索引页面中按ID显示帖子

时间:2014-01-06 06:49:18

标签: php wordpress-theming wordpress

我在wordpress中的索引页面显示帖子时遇到问题,标题和内容都没有显示。目前我正在修改二十二个模板的index.php来显示id的自定义帖子,我的目标是在我的索引页面显示3个帖子,这里是我的代码:

<?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.
 * For example, it puts together the home page when no home.php file exists.
 *
 * @link http://codex.wordpress.org/Template_Hierarchy
 *
 * @package WordPress
 * @subpackage Twenty_Twelve
 * @since Twenty Twelve 1.0
 */

get_header(); ?>

    <div id="primary" class="site-content">
        <div id="content" role="main">
        <br><br>
        <?php if ( have_posts() ) : ?>

            <?php /* Start the Loop */ ?>
            <?php while ( have_posts() ) : the_post(); ?>
                <?php get_template_part( 'content', get_post_format() ); ?>
            <?php endwhile; ?>

            <?php twentytwelve_content_nav( 'nav-below' ); ?>

        <?php else : ?>

            <article id="post-0" class="post no-results not-found">

            <?php if ( current_user_can( 'edit_posts' ) ) :
                // Show a different message to a logged-in user who can add posts.
            ?>
                <header class="entry-header">
                    <h1 class="entry-title"><?php _e( 'No posts to display', 'twentytwelve' ); ?></h1>
                </header>

                <div class="entry-content">
                    <p><?php printf( __( 'Ready to publish your first post? <a href="%s">Get started here</a>.', 'twentytwelve' ), admin_url( 'post-new.php' ) ); ?></p>
                </div><!-- .entry-content -->

            <?php else :
                // Show the default message to everyone else.
            ?>
                <header class="entry-header">
                    <h1 class="entry-title"><?php _e( 'Nothing Found', 'twentytwelve' ); ?></h1>
                </header>

                <div class="entry-content">
                    <p><?php _e( 'Apologies, but no results were found. Perhaps searching will help find a related post.', 'twentytwelve' ); ?></p>
                    <?php get_search_form(); ?>
                </div><!-- .entry-content -->
            <?php endif; // end current_user_can() check ?>

            </article><!-- #post-0 -->

        <?php endif; // end have_posts() check ?>

        </div><!-- #content -->
    </div><!-- #primary -->

<?php get_sidebar(); ?>
<?php get_footer(); ?>

上面的代码是wordpress中二十二个模板的默认index.php。我替换了以下代码:

 <?php /* Start the Loop */ ?>
 <?php while ( have_posts() ) : the_post(); ?>
 <?php get_template_part( 'content', get_post_format() ); ?>
 <?php endwhile; ?>
 <?php twentytwelve_content_nav( 'nav-below' ); ?>

对此,因为我只想通过id显示帖子23。

 <?php $the_query = new WP_Query( 'page_id=23' ) ?>
 <?php while ( $the_query->have_posts() ) : ?>
 <?php $the_query->the_post(); ?>
 <?php the_title(); ?>
 <?php the_content(); ?>
 <?php endwhile; ?>
 <?php wp_reset_postdata(); ?>

所以我的新index.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.
 * For example, it puts together the home page when no home.php file exists.
 *
 * @link http://codex.wordpress.org/Template_Hierarchy
 *
 * @package WordPress
 * @subpackage Twenty_Twelve
 * @since Twenty Twelve 1.0
 */
get_header();
?>

<div id="primary" class="site-content">
    <div id="content" role="main">
        <br><br>
        <?php if (have_posts()) : ?>

            <?php $the_query = new WP_Query('page_id=23') ?>
            <?php while ($the_query->have_posts()) : ?>
                <?php $the_query->the_post(); ?>
                <?php the_title(); ?>
                <?php the_content(); ?>
            <?php endwhile; ?>
            <?php wp_reset_postdata(); ?>

        <?php else : ?>

            <article id="post-0" class="post no-results not-found">

                <?php
                if (current_user_can('edit_posts')) :
                    // Show a different message to a logged-in user who can add posts.
                    ?>
                    <header class="entry-header">
                        <h1 class="entry-title"><?php _e('No posts to display', 'twentytwelve'); ?></h1>
                    </header>

                    <div class="entry-content">
                        <p><?php printf(__('Ready to publish your first post? <a href="%s">Get started here</a>.', 'twentytwelve'), admin_url('post-new.php')); ?></p>
                    </div><!-- .entry-content -->

                <?php
                else :
                    // Show the default message to everyone else.
                    ?>
                    <header class="entry-header">
                        <h1 class="entry-title"><?php _e('Nothing Found', 'twentytwelve'); ?></h1>
                    </header>

                    <div class="entry-content">
                        <p><?php _e('Apologies, but no results were found. Perhaps searching will help find a related post.', 'twentytwelve'); ?></p>
                    <?php get_search_form(); ?>
                    </div><!-- .entry-content -->
    <?php endif; // end current_user_can() check  ?>

            </article><!-- #post-0 -->

<?php endif; // end have_posts() check  ?>

    </div><!-- #content -->
</div><!-- #primary -->

<?php get_sidebar(); ?>
<?php get_footer(); ?>

这就是我所拥有的一切。你能帮助我吗?显示帖子有什么不对吗?先谢谢你们。 :)

3 个答案:

答案 0 :(得分:1)

如果你不想使用Wp_query的方法 试试这个:

<div id="primary" class="site-content">
    <div id="content" role="main">
        <br><br>
        <?php if (have_posts()) : ?>
        <?php $post = get_post(23);?>
         <?php echo $post->post_title; ?>
         <?php echo $post->post_content; ?>
        <?php else : ?>

            <article id="post-0" class="post no-results not-found">

                <?php
                if (current_user_can('edit_posts')) :
                    // Show a different message to a logged-in user who can add posts.
                    ?>
                    <header class="entry-header">
                        <h1 class="entry-title"><?php _e('No posts to display', 'twentytwelve'); ?></h1>
                    </header>

                    <div class="entry-content">
                        <p><?php printf(__('Ready to publish your first post? <a href="%s">Get started here</a>.', 'twentytwelve'), admin_url('post-new.php')); ?></p>
                    </div><!-- .entry-content -->

                <?php
                else :
                    // Show the default message to everyone else.
                    ?>
                    <header class="entry-header">
                        <h1 class="entry-title"><?php _e('Nothing Found', 'twentytwelve'); ?></h1>
                    </header>

                    <div class="entry-content">
                        <p><?php _e('Apologies, but no results were found. Perhaps searching will help find a related post.', 'twentytwelve'); ?></p>
                    <?php get_search_form(); ?>
                    </div><!-- .entry-content -->
    <?php endif; // end current_user_can() check  ?>

            </article><!-- #post-0 -->

<?php endif; // end have_posts() check  ?>

    </div><!-- #content -->
</div><!-- #primary -->

<?php get_sidebar(); ?>
<?php get_footer(); ?>

答案 1 :(得分:0)

您需要显示ID为23的帖子。对吗?

<?php if (have_posts()) : ?>

            <?php $the_query = new WP_Query('p=23') ?> 
            <?php while ($the_query->have_posts()) : ?>
                <?php $the_query->the_post(); ?>
                <?php the_title(); ?>
                <?php the_content(); ?>
            <?php endwhile; ?>
            <?php wp_reset_postdata(); ?>

        <?php else : ?>

答案 2 :(得分:0)

你错过了这样的小事:

$query = new WP_Query( 'p=7' );

替代您可以尝试query_posts()查询特定帖子,如下所示:

<?php query_posts('p=23'); ?>
    <?php while (have_posts()) : the_post(); ?>
        <h4><?php the_title(); ?></h4>
        <?php the_content(); ?>
    <?php endwhile;?>
<?php get_footer(); ?>