In meiner Anwendung muss ich ein Widget im Admin-Dashboard erstellen, das einen Abschnitt aller post_types
mit der Anzahl der Beiträge von jedem von ihnen verbunden anzeigen wird .WordPress: post_type-> umschreiben ['slug'] gibt post_type zurück, nicht die Slug
Um das obige zu erreichen habe ich den folgenden Codeblock in meiner functions.php
Datei:
add_action('wp_dashboard_setup', 'tp_post_counts_reference');
function tp_post_counts_reference() {
global $wp_meta_boxes;
wp_add_dashboard_widget('custom_help_widget', 'Posts in all post types', 'custom_dashboard_help');
}
function custom_dashboard_help() {
$types = get_post_types();
foreach($types as $type)
{
if($type != 'travelog' && $type != 'package_tour' && $type != 'hotel-info') continue;
$typeobj = get_post_type_object($type);
echo '<a href="/' . $typeobj->rewrite['slug'] . '">' . $typeobj->labels->name . '</a>: ' . wp_count_posts($type)->publish . '<br />';
}
}
Aber $typeobj->rewrite['slug']
tatsächlich die post_type anstatt ihre entsprechenden Slug ausgibt.
Zum Beispiel: Ich habe die folgenden benutzerdefinierten Post-Typen
Travelog (name: Travelog, post_type: travelog, Slug: Reiseberichte)
Hotel Informationen (Name: Hotel Infos, post_type: Hotel-Info, slug: Hotels)
Die tatsächliche Ausgabe für
'<a href="/' . $typeobj->rewrite['slug'] . '">' . $typeobj->labels->name . '</a>: ' . wp_count_posts($type)->publish
sind
<a href="/travelog">Travelog</a>: 6
und
<a href="/hotel-info">Hotel</a>: 11
, als ich erwarten, dass sie die Ausgabe:
<a href="/travelogs">Travelog</a>: 6
und
<a href="/hotels">Hotel</a>: 11
Bitte sagen Sie mir, was ich falsch gemacht habe :(
NB : Meine WP v ersion ist 4.7.5
Vielen Dank für Ihre Antwort. Ich habe Ihre Lösung versucht, aber es gibt 'home_url()' für alle Posts zurück. Scheint wie nach https://wordpress.stackexchange.com/a/210545/109082, es gibt falsch zurück! Ich habe 'has_archive => true;' (http://www.wpbeginner.com/wp-tutorials/how-to-create-a-custom-post-types-archive-page-in-wordpress/) in meinem CPT hinzugefügt . Dann deaktiviert und reaktiviert das Plugin. Aber immer noch zeigen alle Post-Typen auf 'home_url()'. Was ist falsch gelaufen? –
Hallo, bitte ignorieren Sie meine vorherige Nachricht. Ich hatte einen Tippfehler in meiner CPT-Erklärung. Ihre Lösung funktioniert tatsächlich! Danke :) –
Ich habe es zu einer Antwort gemacht, um zukünftigen Besuchern zu helfen. Wenn das Problem gelöst wurde, sollten Sie die Antwort akzeptieren. –