Sto lavorando su un tema WordPress personalizzato.Come posso visualizzare un elenco di categorie e tutti i loro post in WordPress?
Sto tentando di mostrare un elenco di categorie (come intestazioni) per un tipo di post personalizzato e sotto l'intestazione di ciascuna categoria vorrei elencare i titoli dei post e un singolo campo personalizzato. Sto usando il plugin Tipi. Conosco un po 'di php e ho qualche esperienza con WordPress, ma non abbastanza per capire come funziona.
Esempio:
personalizzato Post Tipo: Voce di menu
campo personalizzato per questo tipo del messaggio: Articolo Prezzo
Categoria: otturazioni Sandwich
Categoria: Minestre
risultato desiderato:..
Sandwich otturazioni
formaggio - £ # ##
Ham - £ # ##
Tuna - £ #. ##
...
Minestre
pomodoro
pollo
di verdure
L'idea sarà per nuove categorie da aggiungere al volo (ad esempio , un giorno potrebbero iniziare a vendere scioglimenti), e per WP per scorrere le categorie a Se ne aggiungono di nuovi, risparmiando dal dover scrivere hard-code in nuove categorie sulla pagina man mano che vengono aggiunti.
Ecco quello che ho finora:
<?php
$args = array(
'post_type' => 'menu-item',
'orderby' => 'name',
'parent' => 0
);
$categories = get_categories($args);
foreach ($categories as $category) {
$posts = get_posts($args);
$item_price = types_render_field("item-price");
echo '<h2>' . $category->name . '</h2>';
?>
<ul><?php
foreach($posts as $post) {
?>
<li><?php the_title(); ?>, <?php echo $item_price; ?></li>
<?php
}
}
?>
Quello che sto ricevendo è questo:
Panini
pomodoro,
Formaggio svizzero,
francese Brie,
francese Brie,
...
Minestre
pomodoro, £ 2.60
Formaggio svizzero, £ 2.60
French Brie, £ 2.60
Brie francese, £ 2,60
Qualsiasi aiuto sarebbe apprezzato!
UPDATE
Questo sembra aver contribuito:
<?php
$args = array(
'post_type' => 'menu-item'
);
$categories = get_categories($args);
$posts = get_posts($args);
foreach ($categories as $category) {
echo '<h2>' . $category->name . '</h2>';
?>
<div class="menu-items-container">
<?php foreach($posts as $post) { ?>
<?php $item_price = types_render_field("item-price"); ?>
<?php if (in_category($category)) { ?>
<p><?php the_title(); ?>, <?php echo $item_price; ?></p>
<?php } ?>
<?php } ?>
</div>
<?php } ?>
E mi sta dando i risultati che stavo cercando. Sono incappato in questa soluzione attraverso la sperimentazione e il felice incidente, quindi sono consapevole che potrebbe non essere la migliore pratica: consigli o suggerimenti per il miglioramento sarebbero i benvenuti!
Molto interessante domanda, perché è davvero facile da realizzare, MA *** *** se scegli la strada più semplice e più generale (* come hai fatto tu come soluzione *), è molto costoso da gestire. In una piccola installazione con solo alcune categorie e post hai già in esecuzione più di 100 query, il che è folle. Sfortunatamente sono completamente consumato da una giornata impegnativa, non ho la forza di codificare un esempio funzionante., Ma la soluzione migliore è eseguire una query per ottenere tutti i messaggi, e usare 'usort()' per ordinare risultati in base alla categoria –