Ich hoffe, ich kann eine klare Frage schreiben, da ich verwirrt war, als ich versuchte, diese zu lösen ...
Ich habe einen benutzerdefinierten Post-Typ ... dieser benutzerdefinierte Post-Typ hat Taxomony (Kategorie wie)
und ich möchte eine Struktur wie diese zurückgeben auf einer Seite, die alle Beiträge von
dieser Beitragstyp ..
--------------------------------------------- Gewünschte Struktur
taxomony-Kategoriename (Beispiel: New York)
- post one (mit new york kategorie verbunden)
- Posten zwei (mit New York Kategorie verbunden)
- post drei (mit new york kategorie verbunden)
taxomony-Kategoriename (Beispiel: Washington DC)
- Post One (zusammen mit der Kategorie Washington DC)
- Posten zwei (verbunden mit der Kategorie Washington DC)
- nach drei (zusammen mit der Kategorie Washington DC)
- nach vier (zusammen mit der Kategorie Washington DC)
- Post Five (zusammen mit der Kategorie Washington DC)
taxomony-Kategoriename (Beispiel: SomeCity)
- post one (zugeordnet zu SomeCity Kategorie)
- post zwei (mit SomeCity Kategorie verbunden)
Dies ist der Code, den ich jetzt habe:
<div class="pageContent portfolioPage">
<!--=STR== PAGE TITLE ===-->
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<h1 id="post-<?php the_ID(); ?>"><?php the_title(); ?></h1>
<?php the_content(); ?>
<?php endwhile; endif; ?>
<!--=END== PAGE TITLE ===-->
<!--=STR== OUR CLIENTS ===-->
<?php
/*
query_posts(array(
'post_type' => 'vacationrental',
'showposts' => 100
) );
*/
$loop = new WP_Query( array(
'post_type' => 'vacationrental',
'post_per_page' => 100,
'orderby' => 'date',
'order' => 'ASC'
));
?>
<?php while ($loop->have_posts()) : $loop->the_post(); ?>
<div class="vacationRentalBox">
<div class="vacationRentalBox-inner">
<?php
$image_id = get_post_thumbnail_id();
$image_url = wp_get_attachment_image_src($image_id,'large');
$image_url = $image_url[0];
// $googleMapsUrl = get_post_meta( $post->ID, 'vacationrental_map', true ); // GOOGLE MAPS URL
?>
<div class="vacationRentalBar">
<div class="vacationRentalName"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></div>
<div class="thumbsingle">
<a title="<?php the_title(); ?>" href="<?php echo $image_url; ?>" class="lightbox"><?php the_post_thumbnail('testimonialPage'); ?></a>
</div>
<div class="vacationRentalDescription"><?php dynamic_excerpt(315); ?></div>
<div class="vacationRentalExtraInfo">
<div class="vacationRentalReadMore"><a href="<?php the_permalink(); ?>" rel="nofollow"><?php _e('Read More →' ,'sagive'); ?></a></div>
</div>
<br style="clear: both;" />
</div>
</div>
</div>
<?php endwhile;?>
<!--=END== OUR CLIENTS ===-->
<br style="clear: both;" />
</div>
.
Ich habe es geschafft, die Liste der Taxomonies-Kategorien folgendermaßen abzurufen:
$terms = get_terms("locations");
$count = count($terms);
if ( $count > 0 ){
echo "<ul>";
foreach ( $terms as $term ) {
echo "<li>" . $term->name . "</li>";
}
echo "</ul>";
}
Aber ich weiß nicht, wie ich das in die Schleife/Struktur integrieren soll. Würde mich sehr über Ihre Hilfe freuen, da ich feststecke.
Wenn ich Ihrer Frage richtig folge, könnten Sie eine verschachtelte Abfrageschleife verwenden, die Ihre Taxonomiebegriffe durchläuft und dann für jeden eine WP_Query-Schleife durchführt.
Es gibt einen komplizierteren Ansatz mit benutzerdefiniertem SQL und einem Filter, aber das folgende Beispiel würde ich anstreben:
$terms = get_terms("locations");
$count = count($terms);
if ( $count > 0 ){
foreach ( $terms as $term ) {
echo '<h2>' . $term->name . '</h2>';
echo '<ul>';
$loop = new WP_Query( array(
'post_type' => 'vacationrental',
'post_per_page' => 100,
'orderby' => 'date',
'order' => 'ASC',
'tax_query' => array(
array(
'taxonomy' => 'locations',
'field' => 'id',
'terms' => $term->term_id
)
)
));
// the loop
while ($loop->have_posts()) : $loop->the_post();
// do loop content
echo '<li>' . get_the_title() . '</li>';
endwhile;
// reset $post so that the rest of the template is in the original context
wp_reset_postdata();
echo '</ul>';
}
}
oK, das ist alt und Sie haben eine Lösung, aber ich habe versucht, das gleiche zu tun. Hier ist, wie ich es geschafft habe, w/SQL Voodoo von ein paar Stellen zusammen gepatcht, aber meistens:
Mit wp_query ist es möglich, nach Taxonomie zu bestellen? und
Gruppieren von benutzerdefinierten Beitragstypen nach benutzerdefinierten Taxonomiebegriffen
zuerst die Abfrage Voodoo:
function wpa_38075( $clauses, $wp_query ) {
global $wpdb;
if( !is_post_type_archive( 'vacationrental' )) return $clauses;
//join term_relationships to posts, and term_relationships to term_taxonomy and term_taxonomy to terms
$clauses['join'] .= "LEFT OUTER JOIN {$wpdb->term_relationships} ON {$wpdb->posts}.ID={$wpdb->term_relationships}.object_id
LEFT OUTER JOIN {$wpdb->term_taxonomy} USING (term_taxonomy_id)
LEFT OUTER JOIN {$wpdb->terms} USING (term_id)" ;
//look for posts with and without a subject term
$clauses['where'] .= " AND (taxonomy = 'locations' OR taxonomy IS NULL)";
$clauses['groupby'] = "object_id";
//remove limits
$clauses['limits'] = "";
//group posts by term name
$clauses['orderby'] = "GROUP_CONCAT({$wpdb->terms}.name ORDER BY name ASC) ";
return $clauses;
}
add_filter( 'posts_clauses', 'wpa_38075', 10, 2 );
und dann in deiner Vorlage:
<?php
$prev = ''; //not set yet
if (have_posts()) :
echo "<ul>";
while ( have_posts() ) : the_post();
$subhead = array_shift(wp_get_post_terms(get_the_ID(), 'subject', array("fields" => "names")));
$subhead = $subhead ? $subhead : __('Uncategorized','yourtextdomain');
if($subhead != $prev) { ?>
<h3 class="subhead"><?php echo $subhead;?></h3>
<?php } ?>
<li><a href="<?php echo get_permalink();?>" title="<?php echo __('Permalink to', 'peterwade') . ' ' . get_the_title();?>"><?php the_title();?></a></li>
<?php
$prev = $subhead; //cache the previous tax term
endwhile;
echo "</ul>";
endif;
?>