Angenommen, wir haben nur wenige Kategorien, Tags und benutzerdefinierte Beitragstypen und Taxonomien. Wie können wir alle Kategorien und Tags auf einer Seite auflisten? So etwas wie;
Seite
Kategorieminiatur und Kategoriename 1 (Link zur Kategorieseite) Beschreibung
Kategorieminiatur und Kategoriename 2 (Link zur Kategorieseite) Beschreibung
Kategorieminiatur und Kategoriename 3 (Link zur Kategorieseite) Beschreibung
Teiler
Tag-Miniaturansicht und Tag-Name 1 (Link zur Tag-Seite) Beschreibung
Tag-Miniaturansicht und Tag-Name 2 (Link zur Tag-Seite) Beschreibung
Tag-Miniaturansicht und Tag-Name 3 (Link zur Tag-Seite) Beschreibung
Dasselbe gilt für benutzerdefinierte Beitragstypen und Taxonomien.
Und wenn die Beschreibung und das Vorschaubild nicht möglich sind, ist nur ein Name mit Link ausreichend.
Das meiste davon kann mit diesen Plugins erreicht werden.
Im Moment suche ich im Plugin-Code, um das zu erreichen, was ich will.
TERM METADATA
Mit den neuen Term-Metadaten in 4.4 können Thumbnails für Terme abgerufen werden. Sie müssen diese nur vorab selbst definieren.
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 = '' )
KATEGORIEN
get_categories () Gibt ein Array von Kategorieobjekten zurück, die mit den Abfrageparametern übereinstimmen.
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 () Ruft ein Array von Objekten für jeden Begriff in der post_tag-Taxonomie ab.
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/>';
}
TAXONOMIEN
get_taxonomies () Liste der registrierten Taxonomieobjekte abrufen.
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 () Gibt die registrierten Post-Typen zurück wie in $ wp_post_types gefunden. get_posts () erstellt ein Array von Posts basierend auf einer Reihe von Parametern, verwenden Sie es also mit Ihrer 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>";
}
TRANSIENTES CACHING
Wenn Sie die Ergebnisse all dieser Abfragen zwischenspeichern möchten, ziehen Sie die Transients-API in Betracht. Dadurch wird das Ergebnis für eine begrenzte Zeit in der Datenbank gespeichert (was Sie ~ anfordern ~). Es ist kein bestimmter Zeitrahmen, da Plugins wie WP Optimize den Cache jederzeit leeren können.
// 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>");
Um den Wert zu löschen, löschen Sie einfach mit der Taste.
delete_transient ( $trans_key );