2016-07-15 43 views
2

Ich möchte die save_post-Funktion aufrufen, herausfinden, in welcher Kategorie sich der Beitrag befindet, und dann eine andere Seitenvorlage für Beiträge in jeder Kategorie zuweisen. Ich habe ungefähr 30 verschiedene Versionen davon ohne Glück versucht. Wird mir bitte jemand helfen, mich in die richtige Richtung zu lenken?wordpress functions.php - Verwenden Sie unterschiedliche Seitenvorlagen für jede Beitragskategorie

add_action('save_post', 'assign_custom_template'); 
function assign_custom_template($post_id) { 
    $category = get_the_category($post_id); 
    $cat_id = $category->cat_ID; 
    if($cat_id == 1) { 
     update_post_meta($post_id, "_wp_page_template", "template1.php"); 
    } 
    if($cat_id == 2) { 
     update_post_meta($post_id, "_wp_page_template", "template2.php"); 
    } 
} 

Antwort

0

Ich habe versucht, das offizielle WP-Hierarchie-Schema unter meinen Posts & benutzerdefinierte Post-Typen zu emulieren, aber es war einfach nicht passiert. Am Ende habe ich benutzerdefinierte Post-Typen verwendet, um Vorlagen sowohl den "Listen" -Seiten als auch den "Einzelseiten" zuzuordnen. Und dann habe ich ein Javascript geschrieben, das nach der Post-String-Zeichenfolge in der URL sucht, und wenn es erkannt wird, fügt es die current_page_parent/ancestor-Klassen den entsprechenden Menüelementen hinzu. Nicht perfekt oder absolut zukunftssicher, aber es macht den Job erledigt.

Wenn jemand mit einer besseren Lösung kommt, bitte posten Sie es!

2

Sie müssen nur category-1.php zu schaffen, die als template1.php und category-2.php gemacht, die als template2.php in Ihrem Thema Wurzel gemacht.

Weitere Informationen finden Sie unter template hierarchy.

+0

Ist es nicht so, dass Sie eine Vorlage für die Kategorielistenseite angeben? Ich brauche separate Vorlagen für die "Liste" Seite und "individuelle" Seiten. Aber das lässt mich fragen, ob ich stattdessen einen benutzerdefinierten Beitragstyp verwenden soll? – supernaut