Cum să afișezi categorii din taxonomie personalizată folosind shortcode-uri

12 mai 2011, 07:10:20
Vizualizări: 17.3K
Voturi: 2

Tocmai am rezolvat o întrebare aici: Cum să afișezi postări dintr-o singură categorie dintr-o taxonomie personalizată

Acum mă întreb cum să iau acest cod:

<?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();

// faci ceva aici
?>

<?php endwhile; ?>

și să-l apelez folosind shortcode-uri, de exemplu pentru a afișa categoria bulk-racks folosind ceva de genul [inventory-category="bulk-racks"]

Știu cum să creez un shortcode simplu, dar nu știu cum să scriu funcția care să returneze postările pe baza numelui categoriei introdus în shortcode.

Din nou, orice ajutor ar fi foarte apreciat.

2
Comentarii

Într-adevăr, marcarea soluțiilor este o chestiune de respect pentru timpul investit în sarcina ta de către alți utilizatori.

kaiser kaiser
12 mai 2011 14:04:20

Mulțumesc băieți, am acceptat primul răspuns, vina mea că nu am citit bine întrebările frecvente. Totuși, e cam dur să dai vot negativ la întrebarea mea validă, deoarece ar putea ajuta și pe alții.

maikunari maikunari
12 mai 2011 16:34:23
Toate răspunsurile la întrebare 1
6

Aruncați o privire la shortcode-ul pentru postări pe categorii pentru a vă face o idee, iar aici este plugin-ul cu modificări minore pentru a apela tipul de postare și taxonomia dumneavoastră:

// Shortcode pentru categoria de taxonomie
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');

utilizare:

pur și simplu introduceți acest shortcode în postările sau paginile dumneavoastră

[inventory-category totalposts="3" category="bulk-racks" thumbnail="true" excerpt="true" ]
  • totalposts - numărul total de postări de afișat. implicit este -1
  • category - slug-ul categoriei. folosiți virgula , pentru mai multe slug-uri
  • thumbnail - setați true dacă doriți să afișați imaginea în miniatură. implicit este false
  • excerpt - setați true dacă doriți să afișați rezumatul. implicit este true
  • orderby - postările vor fi ordonate după. implicit post_date. consultați http://codex.wordpress.org/Template_Tags/get_posts pentru detalii
12 mai 2011 09:13:47
Comentarii

Mulțumesc foarte mult Bainternet, voi încerca asta imediat!

maikunari maikunari
12 mai 2011 16:35:19

Am întâlnit o eroare fatală: Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 17301490 bytes) in \wp-content\themes\ECSE\functions\inventory-shortcode.php on line 30. Ai vreo idee care ar putea fi problema? Apropo, aceasta este linia 30 "$output .= '<div class="cat-post-list">';"

maikunari maikunari
12 mai 2011 19:56:56

Presupun că se epuizează memoria disponibilă

Bainternet Bainternet
12 mai 2011 20:22:37

Crezi că asta ar putea fi cauzat de hosting-ul lent de la Go Daddy pe care clientul meu îl folosește?

maikunari maikunari
12 mai 2011 20:42:31

Cred că are legătură cu setările de memorie ale serverului

Bainternet Bainternet
12 mai 2011 21:46:49

Actualizare rapidă - nu am reușit să fac asta să funcționeze fără eroare de memorie epuizată, am încercat pe diferite host-uri de asemenea. Am ajuns să nu folosesc shortcode-ul. Oricum, mulțumesc din nou.

maikunari maikunari
17 mai 2011 20:31:43
Arată celelalte 1 comentarii