Ist es besser Praxis, Query_Posts, WP_Query oder get_posts zu verwenden, um verschiedene benutzerdefinierte Schleifen innerhalb einer Seite zu erstellen?

wordpress.stackexchange https://wordpress.stackexchange.com/questions/8028

  •  16-10-2019
  •  | 
  •  

Frage

Im Moment benutze ich get_posts Um Cusstom -Post -Typen mit einer benutzerdefinierten Taxonomie abzurufen, die ihm zugewiesen ist, um statische Inhalte wie folgt zu generieren:

<?php
/**
 * Template Name: Front Page
 * @package WordPress
 * @subpackage Prominent
 * @since Prominent 1.0
 */
get_header(); ?>
<div class="shadow-top">
    <!-- Shadow at the top of the slider -->
</div>
<div id="intro">
    <div class="container">
        <div id="slider-wrapper">
            <div id="slider">
            <?php // Create custom loop ?>
            <?php $custom_posts = get_posts('post_type=page_content&page_sections=Slider (Front Page)'); ?>
            <?php foreach( $custom_posts as $post ) : setup_postdata( $post ); ?>
                <p><?php the_content(); ?></p>
            <?php endforeach; ?>
            <?php wp_reset_query(); ?>
            </div>
            <div class="shadow-slider">
                <!-- Shadow at the bottom of the slider -->
            </div>
        </div><!-- #slider-wrapper -->
    </div><!-- .container -->
</div><!-- #featured -->
<div class="shadow-bottom">
    <!-- Shadow at the bottom of the slider -->
</div>
<div id="tagline">
    <div class="container">
        <?php
        $page_id = $post->ID; // 123 should be replaced with a specific Page's id from your site, which you can find by mousing over the link to edit that Page on the Manage Pages admin page. The id will be embedded in the query string of the URL, e.g. page.php?action=edit&post=123.
        $page_data = get_page( $page_id ); // You must pass in a variable to the get_page function. If you pass in a value (e.g. get_page ( 123 ); ), Wordpress will generate an error.

        $content = apply_filters('the_content', $page_data->post_content); // Get Content and retain Wordpress filters such as paragraph tags. Origin from: http://wordpress.org/support/topic/get_pagepost-and-no-paragraphs-problem
        $title = $page_data->post_title; // Get title
        ?>
        <div class="content0">
            <h2><?php echo $content; // Output Content ?></h2>
        </div>
    </div><!-- .container -->
</div><!-- #content-bottom -->
<div id="content">
    <div class="container">
        <div class="mainbar">
            <?php // Create custom loop
            $custom_posts = get_posts('post_type=page_content&page_sections=Content (Front Page)'); ?>
            <?php foreach( $custom_posts as $post ) : setup_postdata( $post ); ?>
                <div class="content-block">
                    <h2><?php the_title(); ?></h2>
                    <p><?php the_content(); ?></p>
                </div><!-- .content-block -->
            <?php endforeach; ?>
            <?php wp_reset_query(); ?>
        </div><!-- #mainbar -->
    </div><!-- .container -->
</div><!-- #content-bottom -->
<?php get_footer(); ?>

Was ist in diesem Fall bessere Praxis?

Um query_posts, wp_query oder get_posts zu verwenden?

enter image description here

War es hilfreich?

Lösung

Hi @janchen:

Wenn Sie die Wahl haben, geh mit WP_Query. Beide anderen Funktionen (query_posts() und get_posts()) Anruf WP_Query indirekt.

Ersteres soll die Hauptabfrage ändern, nachdem die Standardabfrage bereits ausgeführt wurde, beispielsweise wenn Sie eine zweite Schleife wünschen. Aber query_posts() betrifft globale Variablen und kann Nebenwirkungen haben. Wenn möglich, verwenden Sie stattdessen wp_query und Ihr Code ist robuster.

Wie für get_posts(), Es ist nur ein Wrapper herum WP_Query Mit einigen potenziell unerwarteten Standardeinstellungen, sodass Sie genauso gut anrufen können WP_Query direkt und vermeiden Sie diese Probleme.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit wordpress.stackexchange
scroll top