it-swarm.com.de

Anzeigen von Inhalten aus einer bestimmten Kategorie

Ich versuche, auf meiner Nachrichtenseite nur Inhalte aus einer Kategorie (Nummer 3) anzuzeigen, aber ich kann sie nicht zum Laufen bringen. Anstatt nur Beiträge aus Kategorie 3 anzuzeigen, werden Beiträge aus allen Kategorien angezeigt.

Hier ist mein Code:

<?php get_header(); ?>

            <div class="content news_page">

                       <h1>Latest News</h1>     

                       <?php $args = array(
                            'post_type' => 'post' ,
                            'orderby' => 'date' ,
                            'order' => 'DESC' ,
                            'posts_per_page' => 6,
                            'category'         => '3',
                            'paged' => get_query_var('paged'),
                            'post_parent' => $parent
                       ); ?>
                       <?php query_posts($args); ?>




                       <?php if ( have_posts() ) : ?>
                            <?php while ( have_posts() ) : the_post(); ?>

                                <div class="large-4 medium-4 small-12 columns">
                                    <div class="latest_news_cont">
                                    <a href="<?php the_permalink() ?>"><?php the_post_thumbnail(); ?></a>

                                    <a href="<?php the_permalink() ?>"><h5><?php the_title(); ?></h5></a>
                                    <?php the_excerpt(); ?>
                                    <p style="text-align:center;"><a href="<?php the_permalink() ?>" class="readmore_news">Read more</a></p>
<br>
<div class="clear"></div>
                                       </div>
                                    </div>

                            <?php endwhile; ?>
                        <?php endif; ?>


<div class="clear"></div>

            </div><!--end of content-->



<div class="clear"></div>

<?php get_footer(); ?>
1
user3615681

Das Argument ist nicht category, es ist cat. Ihre Abfrage schlägt fehl, weil Sie ein nicht vorhandenes Argument verwenden.

$args = array(
  'post_type' => 'post' ,
  'orderby' => 'date' ,
  'order' => 'DESC' ,
  'posts_per_page' => 6,
  'cat'         => '3',
  'paged' => get_query_var('paged'),
  'post_parent' => $parent
); 
$q = new WP_Query($args);
if ( $q->have_posts() ) { 
  while ( $q->have_posts() ) {
    $q->the_post();
    // your loop
  }
}

Beachten Sie, dass ich Ihre query_posts() in ein neues WP_Query-Objekt konvertiert habe. Verwenden Sie niemals query_posts(). Sogar der Kodex sagt es so.

Hinweis: Diese Funktion ist nicht für Plugins oder Themes vorgesehen. Wie später erläutert, gibt es bessere, leistungsfähigere Optionen zum Ändern der Hauptabfrage. Mit query_posts () kann die Hauptabfrage einer Seite übermäßig vereinfacht und problematisch geändert werden, indem sie durch eine neue Instanz der Abfrage ersetzt wird. Es ist ineffizient (führt SQL-Abfragen erneut aus) und schlägt unter bestimmten Umständen (besonders häufig bei Seitenumbrüchen) fehl. Jeder moderne WP Code sollte zu diesem Zweck zuverlässigere Methoden verwenden, z. B. pre_get_posts hook.

http://codex.wordpress.org/Function_Reference/query_posts

Beachten Sie auch, dass ich unnötige PHP öffnende und schließende Tags entfernt und den Code zur besseren Lesbarkeit formatiert habe. Diese alternative Kontrollstruktursyntax ist meiner Erfahrung nach eine Fehlerformel.

3
s_ha_dum

Ich würde das lieber persönlich machen.

Anstatt:

'category' => '3',

Ersetzen Sie es mit diesem:

'category_name' => 'my-category-slug'

Finden Sie offensichtlich den Namen Ihrer Kategorie-Schnecke und ersetzen Sie "Meine-Kategorie-Schnecke".

Wie von @s-ha-dum erwähnt, ist es besser, diese Methode nicht zu verwenden und stattdessen die WP_Query-Methode zu verwenden. Sie können es im WordPress-Codex hier sehen: http://codex.wordpress.org/Class_Reference/WP_Query#Parameters

2
Matt Royal

Erhalten Sie die ersten fünf Beiträge mit einer bestimmten Kategorie

<?php
        // the query
        $the_query = new WP_Query(array(
            'category_name' => 'post_category_name',
            'post_status' => 'publish',
            'posts_per_page' => 5,
        ));
        ?>

        <?php if ($the_query->have_posts()) : ?>
            <?php while ($the_query->have_posts()) : $the_query->the_post(); ?>
                <?php the_category(); ?>
                <?php the_title(); ?>
                <?php the_excerpt(); ?>
                <?php the_post_thumbnail(); ?>
                <?php the_content(); ?>

            <?php endwhile; ?>
            <?php wp_reset_postdata(); ?>

        <?php else : ?>
            <p><?php __('No News'); ?></p>
        <?php endif; ?>
1
Super Model

Fügen Sie diesen Code in Ihre Funktionsdatei ein:

function wpsites_display_one_category( $query ) {
if ( $query->is_home() && $query->is_main_query() ) {
    $query->set( 'cat', '3' );
    }
}
add_action( 'pre_get_posts', 'wpsites_display_one_category' );

Ändern Sie das Tag is_home () conditional so, dass es mit Ihrer Nachrichtenseite oder der Seitenschleife für Beiträge übereinstimmt, falls erforderlich. Was auch immer Sie unter Einstellungen> Lesen einstellen.

0
Brad Dalton