web-dev-qa-db-fra.com

Comment lister toutes les catégories et les tags dans une page?

Supposons que nous ayons peu de catégories, de balises, de types de messages personnalisés et de taxonomies. Comment pouvons-nous lister toutes les catégories, balises dans une page? Quelque chose comme;

Page

Catégorie miniature et nom de catégorie 1 (lien vers la page de catégorie) Description

Catégorie miniature et nom de catégorie 2 (lien vers la page de catégorie) Description

Catégorie miniature et nom de catégorie 3 (lien vers la page de catégorie) Description

Diviseur

Vignette et nom de la balise 1 (lien vers la page de la balise) Description

Vignette et nom de balise 2 (lien vers la page de balise) Description

Vignette et nom de balise 3 (lien vers la page de balise) Description

Même chose avec le type de poste personnalisé et les taxonomies.

Et si la description et la vignette ne sont pas possibles, seul un nom avec lien sera suffisant.

La plupart de ceci est réalisable par ces plugins.

En ce moment, je cherche dans le code du plugin pour réaliser ce que je veux.

4
Anshuman Chandel

TERM METADATA

Il est possible d'obtenir des vignettes pour les termes utilisant les nouvelles métadonnées de terme dans 4.4. Vous devez également définir vous-même ces éléments à l’avance.


CATÉGORIES

get_categories () Retourne un tableau d'objets de catégorie correspondant aux paramètres de la requête.

echo "Categories:<br/>";

$args = array( 
    'orderby'                  => 'name',
    'order'                    => 'ASC', 
    'public'                   => true,
); 

$categories = get_categories( $args );

foreach ( $categories as $category ) {
     echo '<a href="' . get_category_link( $category ) . '">' . $category->name . '</a><br/>';
}

echo "<hr>"; // divider

TAGS

get_tags () Récupère un tableau d'objets pour chaque terme de la taxonomie post_tag.

echo "Tags:<br/>";

$args = array( 
    'orderby'                  => 'name',
    'order'                    => 'ASC',
    'public'                   => true,
); 

$tags = get_tags( $args );

foreach ( $tags as $tag ) {
     echo '<a href="' . get_tag_link( $tag ) . '">' . $tag->name . '</a><br/>';
}

TAXONOMIES

get_taxonomies () Obtient une liste des objets de taxonomie enregistrés.

echo "Taxonomies:<br/>";

$args = array(  
    '_builtin'                 => false, 
    'public'                   => true,
); 

$taxonomies = get_taxonomies( $args, 'objects' ); 

foreach ( $taxonomies as $taxonomy ) {
    echo '<p>' . $taxonomy->labels->name . '</p>';
}

POST TYPES

get_post_types () Retourne les types de publication enregistrés tels que trouvés dans $ wp_post_types. get_posts () crée un tableau de publications basé sur un ensemble de paramètres, utilisez-le avec votre liste post_type_list.

echo "Post Types:<br/>";

$args = array(
    'public'   => true,
    '_builtin' => false,
);
$output = 'names'; // names or objects, note names is the default
$operator = 'and'; // 'and' or 'or'
$post_types = get_post_types($args, $output, $operator);

// get all the posts for all post_types

$posts = get_posts(array(
                           'post_type'   => $post_types,
                           'numberposts' => - 1,
                           'orderby'     => 'post_type',
                           'order'       => 'ASC',
                           'post_status' => array( 'publish' ),
                           'public'      => true,
                       ));

foreach($posts as $post) {

    $link = get_permalink($post);
    $title = $post->post_title;

    if($post_type !== $post->post_type) {
        $post_type = $post->post_type;
        echo '</br/><p>' . $post_type . '</p></br/>';
    }

    // show link to post

    echo "<p><a href=\"$link\">$title</a></p>";
}

CACHING TRANSIENT

Si vous souhaitez mettre en cache les résultats de toutes ces requêtes, considérez alors l'API Transients . Ceci stockera le résultat dans la base de données pour une durée limitée (que vous ~ demandez ~). Ce n'est pas un certain délai, car des plugins comme WP Optimize peuvent effacer le cache à tout moment.

// check if the value exists using the key -- if it fails then we'll generate the content

if(false === ($trans_value = get_transient($trans_key = 'my_transient_key'))) {

    print_r('NO CACHE FOR ' . $trans_key); // (debug output)

    // start the output buffer to capture our generated content

    ob_start();

    // run your expensive operations -- data sent to the screen will be captured

    print_r('This is an expensive operation!');

    // using ob_get_clean we'll store the results and set the value variable.

    // double check the amount of time you want to keep the data cached
    // set to 0 for auto loading on every page hit.

    set_transient($trans_key, $trans_value = ob_get_clean(), 1 * MINUTE_IN_SECONDS);
}
else {
    print_r('THIS IS A CACHED RESULT FOR ' . $trans_key); // (debug output)
}

// value is ready and cached
print_r("<pre>$trans_value</pre>");

Pour effacer la valeur, effacez simplement avec la touche.

delete_transient ( $trans_key );
3
jgraup