get all page templates

时间:2013-01-25 作者:Jamie

我正在一个单页WordPress网站上工作。这是我第一次尝试这个。我在第五个版本上取得了不同程度的成功。我正在启动一个新版本,我删除了主题文件夹中除标题之外的所有内容。php索引。php,函数。php,页脚。php、页面模板和样式。css

当我在wp\\U Posteta中查看我的数据库时,我可以看到其中有几个页面分配了模板。我以前看过这段代码,所以我第一次尝试它,看看我能得到什么。在我的索引中。php文件。我有一个简单的标准循环。您可以看到,就在\\u post()之后,我尝试了get\\u post\\u meta。我的想法是,它将返回页面模板的所有名称。但事实上我什么都没有得到。我尝试了var\\u转储和foreach循环来查看其中的内容。我找到娜达了。我不知道为什么

作为第二个仍然相关的问题,我下面的查询不会返回数据库中的所有帖子。它只回复了2篇博文,(只有2篇)和8篇博文。它没有显示任何制作的页面。你能告诉我为什么吗?

 <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    <?php $template = get_post_meta($post->ID,\'_wp_page_template\',false); ?>
    <?php var_dump($template); ?>
            <li id="page_<?php the_title(); ?>">


        <?php if(has_post_thumbnail()) {

                }
                the_content(\'Read the rest of this entry »\'); ?>
            </li>
    <?php endwhile; ?>

    <?php else : ?>

    //Something that happens when a post isn’t found.
<?php endif; ?>

1 个回复
最合适的回答,由SO网友:Milo 整理而成

只有page 帖子类型可以指定一个模板(默认帖子类型),它是您在页面属性元框中设置的自定义模板。如果你有page.php 模板文件,您的index.php 将仅用于显示post 帖子类型,因此这些帖子永远不会有_wp_page_template 元键。至于为什么你的index.php 循环,仅post 在主页和存档页上查询帖子类型。如果要在主页上获取所有帖子和页面,请使用pre_get_posts 要修改主页查询,请执行以下操作:

function wpa83038_posts_and_pages_on_home( $query ) {
    if ( $query->is_home() && $query->is_main_query() ) {
        $query->set( \'post_type\', array( \'post\', \'page\' ) );
    }
}
add_action( \'pre_get_posts\', \'wpa83038_posts_and_pages_on_home\' );
但我不确定这会有多大用处。似乎您希望对页面执行另一个自定义查询,并将帖子分开。

结束

相关推荐

Multiple loops are not reset

我可爱的同事们再次设计了一款让我很难在Wordpress中找到它的东西。令人惊讶的是,这是我以前做过多次的事情;在一个页面上有最近的帖子和页面内容。主页是一个页面。在页面内容上方有三篇最近的帖子。对于帖子,我需要在<!--more--> 标签这个循环似乎工作得很好。稍后,在模板中,我循环查看实际页面内容。无论我做什么,它总是给我不可靠的结果。这是我的索引的精简版本。php/页。php模板(它们恰好相同):<div id=\"content\"> <?php g