【问题标题】:Adding a second loop to a Wordpress theme on a separate page在单独的页面上向 Wordpress 主题添加第二个循环
【发布时间】:2010-08-11 06:59:05
【问题描述】:

我正在尝试将两个循环添加到两个单独页面上的主题:主页和博客。

博客基本上是帖子的索引。这是大多数 Wordpress 页面默认的主页。为此,我进入“阅读设置”并将“首页显示”设置为“静态”,将“首页”设置为我在 Wordpress 页面中设置的主页,将“帖子页面”设置为博客页面。

现在的问题是,当我将循环添加到主页时,它不起作用,大概是因为我将帖子页面设置为不同的页面。

那么如何让循环在主页和博客页面上工作?顺便说一句,主页循环只是帖子标题 + 日期 + 可能是摘录。我是否需要完全重新设计主题,或者这在 Wordpress 下是不可能的?

哦,我正在使用的循环是:

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

【问题讨论】:

    标签: wordpress loops wordpress-theming


    【解决方案1】:

    在 WordPress 中运行自定义查询至少有三种方式。

    Query_posts() 可以定义第二个循环的查询字符串。这很容易而且很常见。这段代码是我从codex page for query_posts()复制的一个基本结构:

    //The Query
    query_posts('posts_per_page=5');
    
    //The Loop
    if ( have_posts() ) : while ( have_posts() ) : the_post();
     ..
    endwhile; else:
     ..
    endif;
    
    //Reset Query
    wp_reset_query();
    

    You can also use get_posts() 类似。

    <ul>
     <?php
     global $post;
     $myposts = get_posts('numberposts=5&offset=1&category=1');
     foreach($myposts as $post) :
       setup_postdata($post);
     ?>
        <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
     <?php endforeach; ?>
     </ul> 
    

    这两个函数都接受许多参数,这些参数在 query_posts 函数参考页面上进行了说明。上面显示的参数只是示例。可用参数列表很长。

    您可以使用的第三种方法是实例化WordPress Query object 的另一个实例(WP 的主要查询方法)。在 WordPress 运行默认 wp_query 之后,Query_posts 和 get_posts 都会对数据库进行第二次调用。如果您非常关心性能或减少数据库命中,我建议您学习如何与 wp_query 交互以在运行之前修改默认查询。 wp_query 类提供了许多简单的方法供您修改查询。

    祝你好运!

    【讨论】:

    • 感谢您的回复。我是 Wordpress 的新手,但我不知道可以将代码放在哪里,因为现在 index.php 文件现在通过阅读设置链接到“博客”页面。如果我错了,请纠正我,但你不能只是在静态 WP 页面中间为第二个循环添加 php 代码?
    • 您的主题中应该有一个名为“page.php”的文件。除非您复制并重命名它,并更改文件中显示 /*template name: xxxxxxx/* 的模板名称,否则它是静态页面模板。您将我的代码放在该文件中,或者您创建并用作主页模板的那个文件中。如果您确实创建了备用页面模板文件,请确保通过在 WP 管理区域中编辑您的页面将其设置为主页模板,并在页面模板下拉菜单中选择您的文件,通常在编辑页面的右栏中屏幕。
    • 这不会让它出现在每个静态页面上,而不是只显示在主页上吗?
    • 如果您有其他 WordPress 页面使用 page.php 模板,请复制该文件并重命名。同样在文件中,您会在顶部附近看到“/*模板名称:页面模板*/”。 “页面模板”可能是别的东西。将名称更改为唯一名称。然后,通过将页面模板更改为您创建的模板,编辑您想要在管理区域中显示自定义循环的 WordPress 页面。在右栏中,您会看到一个下拉选择框,用于选择页面模板。您将看到您的自定义模板列出。选择它并保存。现在第二个循环只会出现在那个页面上
    • 好的,谢谢。甚至不知道模板。我最终使用了front-page.php,因为它实际上是我的主页默认的模板给我的读数设置。至于循环,我使用了“new WP_query()”,它现在运行良好。感谢您为我指明正确的方向。
    【解决方案2】:

    WordPress 可能不会为您启动循环,因为您使用的是静态页面。但是如果这个静态页面是在你的主题中定义的(因为你包含了显示循环的 PHP 代码,我假设它是),你总是可以start a new loop there yourself。只需自己拨打query_posts,您的代码就会开始工作。

    【讨论】:

    • 您好,感谢您的回复。我最终使用了“new WP_query”,因为它是一个嵌套循环并使用了 front-page.php 的默认模板。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-22
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-20
    相关资源
    最近更新 更多