php — Uzyskaj unikalny post w kategorii nadrzędnej
WordPress Development Stack Exchange to strona z pytaniami i odpowiedziami dla programistów i administratorów WordPress. Rejestracja zajmuje tylko minutę.
Zarejestruj się, aby dołączyć do tej społeczności
Każdy może zadać pytanie
Każdy może odpowiedzieć
Najlepsze odpowiedzi są głosowane i wznoszą się na szczyt
Spytał
Oglądane2k razy
Mam kategorię nadrzędną i kilka kategorii podrzędnych. Mam też kilka postów należących do kategorii podrzędnych. Każdy post może należeć do kilku kategorii. Chcę wiedzieć, jak wysłać zapytanie do tabeli postów, więc kiedy chcę wyświetlić wszystkie posty w kategorii nadrzędnej, otrzymam cały post w kategoriach podrzędnych. wynik musi być unikalnym postem. Przepraszam za mój zły angielski.
Oto mój kod:
$cats = get_categories('child_of=95');
// loop through the categries
foreach ( $cats as $cat ) {
// setup the cateogory ID
$cat_id = $cat->term_id;
// Make a header for the cateogry
//echo "<h2>".$cat->name."</h2>";
// create a custom WordPress query
query_posts("cat=$cat_id&post_per_page=100");
// start the wordpress loop!
if (have_posts()) : while (have_posts()) : the_post(); ?>
<?php // create our link now that the post is setup ?>
<h2><?php the_title(); ?></h2>
<a href=" the_permalink();?>"><?php the_content(); ?></a>
<?php echo '<hr/>'; ?>
<?php endwhile; endif; // done our wordpress loop. Will start again for each category ?>
<?php } // done the foreach statement ?>
Ale zawsze dostaję duplikaty postów.
1
możesz łatwo znaleźć rozwiązania tego problemu za pomocą google.
– edytuj za pomocą rozwiązania dla duplikatów – aby odfiltrować duplikaty, wypełnij tablicę identyfikatorami. następnie sprawdź, czy post znajduje się w tablicy, jeśli nie, wydrukuj go, w przeciwnym razie pomiń. powiedziałeś, że masz rozwiązanie do uzyskiwania postów, więc nie będę wpisywać kodu
<?php
$do_not_duplicate = array(); // set before loop variable as array
while ( have_posts() ) : the_post();
$do_not_duplicate[] = $post->ID; // remember ID's in loop
//now loop through the array
if ( !in_array( $post->ID, $do_not_duplicate ) ) { // check IDs
// display posts ...
the_title();
}
endwhile;
?>
3
Pętla WordPress powinna być w stanie łatwo sobie z tym poradzić (chyba że nie rozumiem twojego pytania).
Niezależnie od tego, czy używasz pętli i query_posts, czy własnej instancji WP_Query, po prostu przekaż odpowiednie argumenty kategorii.
Przykład:
Kategoria nadrzędna (identyfikator: 1)
Kategoria dziecięca 1 (identyfikator: 2)
Kategoria dziecięca 2 (identyfikator: 3)
<?php
$args = array (
'cat' -> 1, // Category ID of Parent Category (in this case, 1)
'posts_per_page' -> 10 // Show 10 posts from this category, set to -1 to show all
);
query_posts($args);
if ( have_posts() ) : while ( have_posts() ) : the_post();
?>
<!-- Do something -->
<?php endwhile; else: ?>
<p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
<?php endif; ?>
lang-php