it-swarm.com.de

So laden Sie alle Seiten mit ihren Vorlagen auf eine Seite

Ich lerne, wie man mit Wordpress arbeitet und versuche, meine eigene Website darin zu erstellen.

Da es sich bei meiner Website um eine Onepage handelt, möchte ich in der Lage sein, alle meine Seiten (die dann als Abschnitte gelten) mit ihren Vorlagen auf die Startseite zu laden.

ich habe jetzt eine index.php, die die Seiten durchläuft, aber die Seitenvorlagen nicht lädt und ich kann sie einfach nicht zum Laufen bringen. Hier ist meine index.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(); ?>

Ich hoffe wirklich, dass ihr mir helfen könnt!

1
Dennis Heitinga

Sie können dazu jeden Seitennamen gegen die Seite austauschen, die Sie verwenden möchten. Ich habe gerade getestet und es scheint zu funktionieren. Ich bin sicher, es gibt Nachteile (Geschwindigkeit für einen).

<?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(); ?>

Manchmal sind die Leute (einschließlich meiner selbst) so entschlossen, PHP mit WordPress zu verwenden, dass sie viel Zeit damit verschwenden, solche Dinge zu tun, wenn sie es in einem Bruchteil der Zeit hätten schaffen können, wenn sie nur HTML verwendet hätten. Wordpress ist hauptsächlich für dynamische Inhalte konzipiert. Wo One-Pager-Sites meist ziemlich statisch sind.

Ich habe einige dieser Seiten mit WordPress erstellt und hier ist, was ich ausprobiert habe. 1) Statisches HTML in einer WordPress-Vorlage (am schnellsten und am einfachsten) 2) Verwendete einen Pagebuilder. Es gibt einige, vor allem Visual Composer, die dies unterstützen. 3) Erweiterte benutzerdefinierte Felder

Ich persönlich mochte die erweiterte Methode für benutzerdefinierte Felder am meisten und habe sie ein paar Mal verwendet, um dies zu tun. Auf diese Weise können Sie problemlos Bild- und Textfelder hinzufügen, ohne sich Gedanken darüber machen zu müssen, welches Markup der Post-Editor bei der Ausgabe ändern könnte.

    <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>

Oder wenn ich mich wirklich faul fühle, verwende ich die erweiterten benutzerdefinierten Felder wie oben, außer sie mit dem Kurzcode für benutzerdefinierten Inhalt zu verwenden, dann müssen Sie sich überhaupt nicht um PHP kümmern. Es ist so ähnlich wie moustache.js für WordPress, wenn Sie jemals davon gehört haben. Hier ein paar Seiten, die ich gerade mit dieser Methode gemacht habe ( Parallaxe / Sticky-Abschnitte )

Tun Sie einfach, was für Sie am einfachsten ist. Es ist nichts Falsches daran, HTML für etwas zu verwenden, das kaum jemals bearbeitet wird. Wenn Sie es für einen Kunden tun, gibt es ihm einen Grund, Sie bei sich zu behalten, da er immer noch Ihre Hilfe braucht, wenn er möchte, dass diese Seite geändert wird :)

0
Bryan Willis

Erstellen Sie ein Verzeichnis page-templates in Ihrem Design für Seitenvorlagen .

Fügen Sie dort dann Ihre Vorlagen hinzu, lassen Sie jedoch die Aufrufe von get_header() und get_footer() aus.

Erstellen Sie eine Vorlage default.php und dann alle zusätzlichen Vorlagen, die Sie möglicherweise benötigen.

Schreiben Sie nun die Seiten und weisen Sie die richtigen Vorlagen zu.

Führen Sie in Ihrer Schleife Folgendes aus:

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 );
}
1
fuxia