页面模板显示内容(GET_PAGE)

时间:2012-11-28 作者:cachaito

我的问题是,我在索引上显示了3页的内容。通过使用get\\u page()创建php。问题是每个页面都有自己的页面模板

/*
Template Name: another page template
*/
其中包含类别中包含3个帖子的循环。

这样,我只能看到在WP编辑器中键入的页面内容,而不能看到页面上查询到的帖子。

如何在索引上显示页面模板中的三篇文章。php?

用于在索引上显示页面。我使用的php:

<?php
 $id = 1;
 $post = get_page($id);
 $content = apply_filters(\'the_content\', $post->post_content);
 echo $content;
?>
并且页面有自己的带有\\u循环的模板:

<?php query_posts( array( \'category_name\' => \'name\', \'posts_per_page\' => 3 ));
  while (have_posts()) : the_post(); ?>
<?php the_content(); ?>
<?php endwhile; ?>

1 个回复
SO网友:Chip Bennett

您似乎混淆了作为帖子/页面的数据库对象和作为帖子/页面的渲染输出。中包含的数据wp_postswp_post_meta 表格定义post对象。当查询给定的数据库对象时,模板文件定义渲染输出。

有三种类型的查询:给定上下文的默认查询、主查询、核心定义的辅助查询(如导航菜单)和其他地方(主题或插件)定义的自定义查询。

给定上下文的默认主查询从不受自定义查询的影响,即使它可以通过过滤进行修改pre_get_posts 或者用棍棒query_posts().

你打电话时会发生什么get_page() WordPress查询与给定ID关联的post对象,而不是用于在其正常上下文中呈现该对象的模板文件。

长话短说:如果要在其他上下文中运行三个自定义页面模板中的每个模板中的相同自定义查询,则需要执行与在这三个自定义页面模板上使用的代码相同的代码。

(另外:请说明您尚未修改主题index.php 用于此目的的文件?这样做,您将完全打破主题的模板层次结构。)

最干净的解决方案是将自定义查询代码拆分为模板部分,每个自定义页面模板对应一个文件;也许:

  • loop-three-latest-category-x.php
  • loop-three-latest-category-y.php
  • loop-three-latest-category-z.php

    /**
     * Template Name: another page template
     * 
     * Category X custom page template
     * 
     * Used to display the three latest posts in 
     * category x.
     */
    
    get_header();
    
    get_template_part( \'loop-three-latest-category-x\' );
    
    get_footer();
    
    然后,在site front page, 创建名为front-page.php, 并从上面调用所有三个模板零件文件:

    <?php
    /**
     * Front-page template
     * 
     * Used to render the site front page
     */
    
    get_header();
    
    get_template_part( \'loop-three-latest-category-x\' );
    get_template_part( \'loop-three-latest-category-y\' );
    get_template_part( \'loop-three-latest-category-z\' );
    
    get_footer();
    

结束

相关推荐

Getting 404s on New Pages

无法找出发生这种情况的原因-wp安装问题或。htaccess问题?我正在使用一个主题,但默认的wp主题也会出现同样的问题。创建一个新页面(例如:about)后,当我尝试从导航访问它或只输入URL:domain时,会得到404。com/dev/about,我也得到了404。安装在httpdocs/dev中的WP。所有插件都已停用。其他一切似乎都正常工作。