тот же шаблон для нескольких пользовательских типов сообщений

Я знаю, что мы могли бы использовать single-custom-post.php Но у меня есть несколько настраиваемых типов сообщений типа

 america nepal norway 

Я могу сделать single-america.php , single-nepal.ph p, single-norway . Но у них почти одинаковый код, в основном нарушающий DRY . В настоящее время я регистрирую такую ​​запись из плагинов. Как показать шаблон для них внутри плагина с именем, скажем, single-country.php ?

Я думаю, мы можем использовать template_include фильтр? но у меня все еще нет идеи сделать это?

пробовал вот так

 add_filter( 'template_include', function ( $template ) { $cpt=["america","nepal","norway"] if ( //how to check condition if it is custom post type single ) { return ADVANCED_NOTES_DIR . 'country-single.php'; } return $template ; }) ; 

Итак, можно ли использовать один и тот же шаблон для нескольких пользовательских типов сообщений?

Спасибо 🙂

Solutions Collecting From Web of "тот же шаблон для нескольких пользовательских типов сообщений"

Да, вы можете использовать template_include или более конкретный single_template .

Пример кода:

 add_filter( 'single_template', function( $template ) { $cpt = [ 'america', 'nepal', 'norway' ]; return in_array( get_queried_object()->post_type, $cpt, true ) ? 'path/to/country-single.php' : $template; } ); 

Фильтр single_template работает только для сингулярных запросов, поэтому вам не нужно проверять, что вы находитесь в единственном представлении, но просто убедитесь, что тип сообщения с запросом – это один из CPT, для которого вы хотите заменить шаблон.

Я использовал get_queried_object() для области.