Machen alle Unterkategorien die Vorlage ihrer Kategorie Eltern?

Wie kann ich alle Unterkategorien die Vorlage der Kategorie Eltern verwenden?

Solutions Collecting From Web of "Machen alle Unterkategorien die Vorlage ihrer Kategorie Eltern?"

Hier ist ein Code, den ich benutzt habe:

// make category use parent category template function load_cat_parent_template($template) { $cat_ID = absint( get_query_var('cat') ); $category = get_category( $cat_ID ); $templates = array(); if ( !is_wp_error($category) ) $templates[] = "category-{$category->slug}.php"; $templates[] = "category-$cat_ID.php"; // trace back the parent hierarchy and locate a template if ( !is_wp_error($category) ) { $category = $category->parent ? get_category($category->parent) : ''; if( !empty($category) ) { if ( !is_wp_error($category) ) $templates[] = "category-{$category->slug}.php"; $templates[] = "category-{$category->term_id}.php"; } } $templates[] = "category.php"; $template = locate_template($templates); return $template; } add_action('category_template', 'load_cat_parent_template'); 

Daniel Crabbe hatte das gleiche Problem, das ich hatte. Ich habe diese Website mit Code gefunden, der die Vorlagendatei einer übergeordneten Kategorie sucht und verwendet, während die entsprechenden Beiträge angezeigt werden.

Ich habe es aktualisiert, um Slugs im Dateinamen zu unterstützen (nicht nur die Kategorie ID).

 // Use a parent category slug if it exists function child_force_category_template($template) { $cat = get_query_var('cat'); $category = get_category($cat); if ( file_exists(TEMPLATEPATH . '/category-' . $category->cat_ID . '.php') ) { $cat_template = TEMPLATEPATH . '/category-' . $category ->cat_ID . '.php'; } elseif ( file_exists(TEMPLATEPATH . '/category-' . $category->slug . '.php') ) { $cat_template = TEMPLATEPATH . '/category-' . $category ->slug . '.php'; } elseif ( file_exists(TEMPLATEPATH . '/category-' . $category->category_parent . '.php') ) { $cat_template = TEMPLATEPATH . '/category-' . $category->category_parent . '.php'; } else { // Get Parent Slug $cat_parent = get_category($category->category_parent); if ( file_exists(TEMPLATEPATH . '/category-' . $cat_parent->slug . '.php') ) { $cat_template = TEMPLATEPATH . '/category-' . $cat_parent->slug . '.php'; } else { $cat_template = $template; } } return $cat_template; } add_action('category_template', 'child_force_category_template'); 

Eigentlich ist es ein Filterhaken

https://developer.wordpress.org/reference/functions/get_category_template/

 /** * Retrieve path of category-videos.php template for 'videos' subcategories * Filtered via 'category_template' hook * * @param string Full path to category template file. * * @return string Full path to category template file. */ function get_category_videos_template( $template ) { $category_ID = intval( get_query_var('cat') ); $category = get_category( $category_ID ); $parent_ID = $category->parent; $parent_category = get_category( $parent_ID ); /** * Check wheter the $parent_category object is not a WordPress Error and its slug is 'videos' */ if ( !is_wp_error( $parent_category ) AND $parent_category->slug == 'videos' ) { /** * Check if the template file exists * */ if ( file_exists( TEMPLATEPATH . '/category-' . $parent_category->slug . '.php' )) { return TEMPLATEPATH . '/category-' . $parent_category->slug . '.php'; } } else { return $template; } } add_filter( 'category_template', 'get_category_videos_template' );