Come chiamare le categorie di tassonomia personalizzata con shortcode

12 mag 2011, 07:10:20
Visualizzazioni: 17.3K
Voti: 2

Ho appena risolto una domanda qui: Come visualizzare post da una singola categoria all'interno di una tassonomia personalizzata

Ora mi chiedo come prendere questo codice:

<?php
    $args = array(
        'posts_per_page' => 1,
        'post_type' => 'inventory',
        'tax_query' => array(
            array(
                'taxonomy' => 'inventory-category',
                'field' => 'slug',
                'terms' => array( 
                    'bulk-racks' 
                )
            )
        )       
    );
query_posts( $args ); while ( have_posts() ): the_post();

// fai qualcosa qui
?>

<?php endwhile; ?>

e chiamarlo usando shortcode, ad esempio per visualizzare la categoria bulk-racks usando questo o qualcosa di simile [inventory-category="bulk-racks"]

So come creare uno shortcode base ma non so come scrivere la funzione che restituirebbe i post in base all'input del nome della categoria nello shortcode.

Ancora una volta, qualsiasi aiuto sarebbe molto apprezzato.

2
Commenti

In effetti, segnare le soluzioni è una questione di rispetto per il tempo investito nel tuo compito da altri utenti.

kaiser kaiser
12 mag 2011 14:04:20

Grazie ragazzi, ho accettato la prima risposta, è colpa mia per non aver letto bene le faq. Comunque è un po' crudele votare negativamente la mia domanda valida poiché potrebbe aiutare altri.

maikunari maikunari
12 mag 2011 16:34:23
Tutte le risposte alla domanda 1
6

Dai un'occhiata allo shortcode per i post di categoria per avere un'idea ed ecco il plugin con piccole modifiche per chiamare il tuo post type e tassonomia:

// Shortcode per la categoria tassonomia
function cat_func($atts) {
    extract(shortcode_atts(array(
            'class_name'    => 'cat-post',
            'totalposts'    => '-1',
            'category'      => '',
            'thumbnail'     => 'false',
            'excerpt'       => 'true',
            'orderby'       => 'post_date'
            ), $atts));

    $output = '<div class="'.$class_name.'">';
    global $post;
    $args = array(
        'posts_per_page' => $totalposts, 
        'orderby' => $orderby,
        'post_type' => 'inventory',
        'tax_query' => array(
            array(
                'taxonomy' => 'inventory-category',
                'field' => 'slug',
                'terms' => array( $category)
            )
        ));
    $myposts = NEW WP_Query($args);


    while($myposts->have_posts()) {
        $myposts->the_post();
        $output .= '<div class="cat-post-list">';
        if($thumbnail == 'true') {
        $output .= '<div class="cat-post-images">'.get_the_post_thumbnail($post->ID, 'thumbnail').'</div>';
        }
        $output .= '<div class="cat-content"><span class="cat-post-title"><a href="'.get_permalink().'">'.get_the_title().'</a></span>';
        if ($excerpt == 'true') {
            $output .= '<span class="cat-post-excerpt">'.get_the_excerpt().'</span>';
        }
        $output .= '</div>
            <div class="cat-clear"></div>
        </div>';
    };
    $output .= '</div>';
    wp_reset_query();
    return $output;
}
add_shortcode('inventory-category', 'cat_func');

utilizzo:

basta inserire questo shortcode nei tuoi post o pagine

[inventory-category totalposts="3" category="bulk-racks" thumbnail="true" excerpt="true" ]
  • totalposts - numero totale di post da visualizzare. Il valore predefinito è -1
  • category - slug della categoria. Usa la virgola , per più slug
  • thumbnail - imposta true se vuoi visualizzare la miniatura. Il valore predefinito è false
  • excerpt - imposta true se vuoi visualizzare l'estratto. Il valore predefinito è true
  • orderby - i tuoi post verranno ordinati per. Il valore predefinito è post_date. Controlla http://codex.wordpress.org/Template_Tags/get_posts per i dettagli
12 mag 2011 09:13:47
Commenti

Grazie mille Bainternet, proverò subito questa soluzione!

maikunari maikunari
12 mag 2011 16:35:19

Sto ricevendo un errore fatale: Errore fatale: Dimensione della memoria consentita di 33554432 byte esaurita (tentativo di allocare 17301490 byte) in \wp-content\themes\ECSE\functions\inventory-shortcode.php alla riga 30. Hai idea di quale possa essere il problema? A proposito, questa è la riga 30 "$output .= '<div class="cat-post-list">';"

maikunari maikunari
12 mag 2011 19:56:56

Immagino che sia un problema di memoria esaurita

Bainternet Bainternet
12 mag 2011 20:22:37

Pensi che potrebbe essere causato dal lento hosting Go Daddy che il mio cliente sta utilizzando?

maikunari maikunari
12 mag 2011 20:42:31

Penso che abbia a che fare con le impostazioni della memoria del server

Bainternet Bainternet
12 mag 2011 21:46:49

Aggiornamento rapido - non sono riuscito a farlo funzionare senza l'errore di memoria esaurita, ho provato anche su host diversi. Alla fine non ho usato lo shortcode. Grazie comunque.

maikunari maikunari
17 mag 2011 20:31:43
Mostra i restanti 1 commenti