• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

[ERLEDIGT] WP: Zeige mir weitere Artikel nur aus dieser Unterkategorie

tigtman

Mitglied
Hallo zusammen,

ich versuche gerade auf meiner Seite (Wordpress) weitere interessante Artikel aus wirklich nur dieser Unterkategorie ausgeben zu lassen.

Meine (Unter-)Kategorie kann ich mir wie folgt ausgeben lassen:
PHP:
<?php $category = get_the_category(); echo $category[0]->cat_name; ?>
Die Related Posts (aus allen Kategorien) bekomme ich wie folgt:
PHP:
<?php $orig_post = $post;
    global $post;
    $category = get_the_category($post->ID);
    if ($category) {
        $category_id = array();
        foreach($category as $individual_category) $category_id = $individual_category->term_id;
        $args=array(
        'category__in' => $category_id,
        'post__not_in' => array($post->ID),
        'posts_per_page'=> -1,
        'caller_get_posts'=>1
    );
    $my_query = new wp_query( $args );
    if( $my_query->have_posts() ) {
        echo '<hr><header class="entry-header"><h3>Weitere Artikel aus der Kategorie</h3></header>'; ?>
       
        <?php while( $my_query->have_posts() ) { ?>
        <?php $my_query->the_post();?>
        <div class="">
            <a href="<?php the_permalink(); ?>">
                <img src="<?php $thumb_id = get_post_thumbnail_id(); $thumb_url = wp_get_attachment_image_src($thumb_id,'thumbnail', true); echo $thumb_url[0]; ?>" alt="<?php echo $image['alt']; ?>" />
                <h3 class=""><?php the_title(); ?></h3>
                <?php echo get_the_time("d.m.Y | H.i"); ?> Uhr
            </a>
        </div>
    <?
            }
        }
    }
    $post = $orig_post;
    wp_reset_query();
?>
Wenn ich nun aber versuche mir wirklich nur Artikel aus der EINEN Unterkategorie mit Hilfe von (4. Zeile):
Code:
...
if ($category[0]) {
...
ausgeben zu lassen, dann ändert sich leider nichts. Es werden nach wie vor auch Artikel aus anderen Kategorien ausgegeben.

Was mache ich nur falsch? Sieht jemand eine Unstimmigkeit?

LG
 
Werbung:
Noch rasch die Hierarchie der Kategorien:

- Bereich
- A
- B
- C
- Post 1
- Post 2
- Post 3​

Zum Beispiel: Es ist der Post 1 geöffnet. Nun sollen als "weitere Artikel" die Posts 2 und 3 von der Kategorie C ausgegeben werden.
 
Wenn ich nun aber versuche mir wirklich nur Artikel aus der EINEN Unterkategorie mit Hilfe von (4. Zeile):
Code:
...
if ($category[0]) {
...
ausgeben zu lassen, dann ändert sich leider nichts. Es werden nach wie vor auch Artikel aus anderen Kategorien ausgegeben.
Unabhängig von dieser if-Klausel durchläuft das foreach alle von get_the_category() gelieferten Einträge. Entweder du lässt das foreach weg und nutzt nur $category[0], oder du beendest das foreach nach dem ersten Durchlauf.
Etwa.
PHP:
<?php $orig_post = $post;
  global $post;
  $category = get_the_category($post->ID);
  if ($category[0]) {
  $category_id = $category[0]->term_id;
  $args=array(
    'category__in' => $category_id,
    'post__not_in' => array($post->ID),
    'posts_per_page'=> -1,
    'caller_get_posts'=>1
    );
    $my_query = new wp_query( $args );
    if( $my_query->have_posts() ) {
    echo '<hr><header class="entry-header"><h3>Weitere Artikel aus der Kategorie</h3></header>';
    ?>
     
    <?php while( $my_query->have_posts() ) { ?>
    <?php $my_query->the_post();?>
    <div class="">
    <a href="<?php the_permalink(); ?>">
    <img src="<?php $thumb_id = get_post_thumbnail_id(); $thumb_url = wp_get_attachment_image_src($thumb_id,'thumbnail', true); echo $thumb_url[0]; ?>" alt="<?php echo $image['alt']; ?>" />
    <h3 class=""><?php the_title(); ?></h3>
    <?php echo get_the_time("d.m.Y | H.i"); ?> Uhr
    </a>
    </div>
       <?
  }
  }
  $post = $orig_post;
  wp_reset_query();
?>
 
Werbung:
Ach so! Das macht Sinn. Vielen Dank für Deine Mühe.

Nur eins noch, es fehlte eine Klammer. Für alle Interessierten:

Code:
<?php $orig_post = $post;
  global $post;
  $category = get_the_category($post->ID);
  if ($category[0]) {
  $category_id = $category[0]->term_id;
  $args=array(
    'category__in' => $category_id,
    'post__not_in' => array($post->ID),
    'posts_per_page'=> -1,
    'caller_get_posts'=>1
    );
    $my_query = new wp_query( $args );
    if( $my_query->have_posts() ) {
    echo '<hr><header class="entry-header"><h3>Weitere Artikel aus der Kategorie</h3></header>';
    ?>
   
    <?php while( $my_query->have_posts() ) { ?>
    <?php $my_query->the_post();?>
    <div class="">
    <a href="<?php the_permalink(); ?>">
    <img src="<?php $thumb_id = get_post_thumbnail_id(); $thumb_url = wp_get_attachment_image_src($thumb_id,'thumbnail', true); echo $thumb_url[0]; ?>" alt="<?php echo $image['alt']; ?>" />
    <h3 class=""><?php the_title(); ?></h3>
    <?php echo get_the_time("d.m.Y | H.i"); ?> Uhr
    </a>
    </div>
       <?
        }
    }
  }
  $post = $orig_post;
  wp_reset_query();
?>
 
Zurück
Oben