如何在页面模板中显示页面内容?


13

在我的WordPress网站上,我制作了一个自定义页面模板,其中包含一个自定义查询[使用WP_Query()]。通过该查询,我可以完美地获取某个类别的帖子。但是我想显示页面内容以及所查询的帖子。

事情会像这样:
---------------------------

页面标题

页面内容

查询的帖子标题

查询帖子内容
---------------------------

  • 我能做什么?

2
问题是什么?这是一个页面模板,因此您可以访问页面内容。例如,通过另一个单独的查询,您可以访问特定的帖子,因此可以输出其内容。所以?
tfrommen 2013年

请在投票之前耐心等待。我为此奋斗,然后找到了解决方案。我试图在这里进行问答,与其他人分享逻辑-我认为这将以我寻找的方式澄清事实。希望对您的问题解答很清楚。
Mayeenul Islam 2013年

首先,我并没有 downvote你的问题。其次,感谢您与我们分享您的知识。您这样做绝对是对的。我想,问题是/ 对于有经验的WP用户/开发人员来说,这个问题并不难解决,以及您仅发布了这个问题。如果您想从一开始就提出问题和答案,只需将您的答案/解决方案直接包含在您写问题的同一页上。在“ 发布您的问题”按钮下方,有一个复选框回答您自己的问题。再次感谢。
tfrommen 2013年

wp_reset_postdata()为营救。应该在每个自定义查询之后执行
kaiser 2013年

Answers:


21

我正在使用两个循环。第一个循环是显示页面内容,第二个循环是显示查询的帖子内容。我在必要时对代码进行了评论。我强调了循环,正如Deckster0 在WordPress支持中所说的那样,它the_content()仅在WordPress循环内有效。我将这些代码放入自己的模板中:

<?php
/*
* Template Name: My Template
*/
get_header(); ?>

<div id="container">
    <div id="content" class="pageContent">

    <h1 class="entry-title"><?php the_title(); ?></h1> <!-- Page Title -->
    <?php
    // TO SHOW THE PAGE CONTENTS
    while ( have_posts() ) : the_post(); ?> <!--Because the_content() works only inside a WP Loop -->
        <div class="entry-content-page">
            <?php the_content(); ?> <!-- Page Content -->
        </div><!-- .entry-content-page -->

    <?php
    endwhile; //resetting the page loop
    wp_reset_query(); //resetting the page query
    ?>

    <?php
    // TO SHOW THE POST CONTENTS
    ?>                        
        <?php
        $my_query = new WP_Query( 'cat=1' ); // I used a category id 1 as an example
        ?>
        <?php if ( $my_query->have_posts() ) : ?>
        <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
        <?php while ($my_query->have_posts()) : $my_query->the_post(); ?>

            <h1 class="entry-title"><?php the_title(); ?></h1> <!-- Queried Post Title -->
            <div class="entry-content">
                <?php the_excerpt(); ?> <!-- Queried Post Excerpts -->
            </div><!-- .entry-content -->

        <?php endwhile; //resetting the post loop ?>

        </div><!-- #post-<?php the_ID(); ?> -->

        <?php
        wp_reset_postdata(); //resetting the post query
        endif;
        ?>

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

第二个查询不应在内部,if( have_posts() )因为该语句将始终为真。如果要检查查询是否有结果,则应if( $my_query->have_posts() )$my_query = new WP_Query( 'cat=1' );和args行之后调用。
t31os 2013年

@ t31os你是对的。我的错。现在将代码更正为此类。感谢您的识别。:)
Mayeenul Islam 2014年

0

通常有两个循环来执行此操作,但是有些过量。

每个帖子或页面都会为您提供超变量$post。有没有想过为什么您的get_post_meta()作品要简单$post->ID;)?

所以,你开始,得到您列出职位WP_Query()之前,您可以访问当前页面级/后数据用$post->ID$post->post_content$post->guid等。

在循环中,此变量由循环的帖子填充。要保存以供以后使用,您可以创建一个新变量

$temp_post = $post

// new WP_Query() + loop here

或致电

wp_reset_query()

上市后。无论如何都应调用最后一个函数,以确保侧边栏中的数据适合当前页面/帖子。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.