如何使用模板将所有页面加载到一个页面中

时间:2015-10-07 作者:Dennis Heitinga

我正在学习如何使用Wordpress,我正在尝试用它建立自己的网站。

由于我的网站是一个onepages,我希望能够加载我的所有页面(然后将其计为部分),以便在frontpage上加载,并有模板。

我现在有了一个索引。php在页面中循环,但不加载页面模板,我就是无法让它工作,这是我的索引。php:

<?php get_header(); ?>
    <!-- START CONTENT -->

        <?php
            $args = array(
                \'sort_order\' => \'ASC\',
                \'sort_column\' => \'menu_order\', //post_title
                \'hierarchical\' => 1,
                \'exclude\' => \'\',
                \'child_of\' => 0,
                \'parent\' => -1,
                \'exclude_tree\' => \'\',
                \'number\' => \'\',
                \'offset\' => 0,
                \'post_type\' => \'page\',
                \'post_status\' => \'publish\'
            );
            $pages = get_pages($args);

            //start loop
            foreach ($pages as $page_data) {
                 $content = apply_filters(\'the_content\', $page_data->post_content);
                 $title = $page_data->post_title;
                 $slug = $page_data->post_name;
                 ?>

                 <div class=\'<?php echo "$slug" ?>\'>

                 <?php
                     echo "$content";
                 ?>

                 </div>
         <?php } ?>

     <!-- END CONTENT -->
<?php get_footer(); ?>
我真的希望你们能帮我!

2 个回复
最合适的回答,由SO网友:Bryan Willis 整理而成

您可以这样做,将每个页面的名称交换为您想要使用的页面。我刚刚测试了一下,它似乎起作用了。我肯定有不利因素(速度)。

<?php
/**
 * Template Name: OnePager
 */
    <?php get_header(); ?>
    <!-- Page One - How it Works -->
    <section id="section1">
    <div class="container">
        <div class="col-sm-12">
            <?php
                $section1 = new WP_Query( \'pagename=how-it-works\' );
                while ( $section1->have_posts() ) : $section1->the_post();?>
                <h1><?php the_title(); ?></h1>
                <?php the_content(); ?>
                <?php endwhile;
                wp_reset_postdata();
            ?>
            </div>
        </div>
    </div>
    </section>
    <!-- Page One - Who We Are -->
    <section id="section2">
    <div class="container">
        <div class="col-sm-12">
            <?php
                $section2 = new WP_Query( \'pagename=who-we-are\' );
                while ( $section2->have_posts() ) : $section2->the_post();?>
                <h1><?php the_title(); ?></h1>
                <?php the_content(); ?>
                <?php endwhile;
                wp_reset_postdata();
            ?>
            </div>
        </div>
    </div>
    </section>
    <!-- Additional Pages Below -->

    <?php get_footer(); ?>
有时,人们(包括我自己)下定决心要将php与wordpress结合使用,以至于他们浪费了大量时间来尝试这样的事情,而他们本可以通过使用html在很短的时间内创建出曾经的内容。Wordpress主要用于动态内容。在大多数情况下,寻呼机网站通常都是静态的。

我用wordpress做了一些单页网站,下面是我的尝试。1) wordpress模板中的静态html(最快、最简单)2)使用了页面生成器。有一些人支持这样做,最著名的是Visual Composer。3) 高级自定义字段

Personally I liked the advanced custom fields method the most and have used it a couple times to do this. This way you can easily add image fields and text fields without having to worry about what markup the post editor might alter on output.

    <section>
        <h1><?php the_field(\'banner_h1_title_text\'); ?></h1>
        <h2><?php the_field(\'banner_h2_description_text\'); ?></h2>
        <a href="#" class="btn btn-default">
            <?php the_field(\'call_to_action_main_button\'); ?>
        </a>
    </section>
或者,如果我真的觉得很懒,我会使用像上面这样的高级自定义字段,除了和Custom Content Shortcode 那么你就不必担心php了。有点像胡子。如果你曾经使用过或听说过的话,请使用js for wordpress。这里有几页我用这种方法制作的(parallax / sticky-sections)

只要做对你来说最简单的事。将html用于几乎从未编辑过的内容没有什么错。另外,如果你是为客户做这件事,这会给他们留下一个理由,因为如果他们想更改页面,他们仍然需要你的帮助:)

SO网友:fuxia

创建目录page-templates 在您的主题中page templates.

然后在那里添加模板,但忽略对get_header()get_footer().

创建模板default.php 然后是您可能需要的所有其他模板。

现在编写页面并指定适当的模板。

在循环中执行以下操作:

foreach ($pages as $page_data)
{
    setup_postdata( $page_data );

    $template = get_post_meta( $page_data->ID, \'_wp_page_template\', true );

    if ( ! $template )
        $template = \'default\';

    locate_template( $template, true, false );
}

相关推荐

WordPress问题:无法将上载的文件移动到wp-Content/Uploads/

我在Fedora运行的机器中创建了一个本地WordPress 4.9.8安装程序,其中包含PHP 7。当我尝试将媒体上传到WordPress管理员时,它一直在说上载的文件无法移动到wp内容/上载/我已经为内容/上传目录授予了完整(777)文件权限,但仍然出现了相同的错误。最后,我尝试手动创建目录结构,并自己放置媒体文件,如下所示/var/www/html/test-jp/wp-content/uploads/2018/09/1024-xxxxx-logo。巴布亚新几内亚原因可能是什么?