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.
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.
add_term_meta( int $term_id, string $meta_key, mixed $meta_value, bool $unique = false )
get_term_meta( int $term_id, string $key = '', bool $single = false )
update_term_meta( int $term_id, string $meta_key, mixed $meta_value, mixed $prev_value = '' )
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 );