Использование get_template_part для получения файла шаблона на основе текущего типа сообщения

Я пытаюсь использовать get_template_part для извлечения файла шаблона на основе текущего типа сообщения (slug), в котором находится пользователь. Файл шаблона включает только изображение, которое используется для конкретных типов сообщений.

<?php get_template_part('parts/get_post_type( $post )') ?><p id="t3-splash-title"><?php $post_type = get_post_type_object( get_post_type($post) ); echo $post_type->labels->singular_name ; ?></p> 

Вышеупомянутое не взорвало страницу, но ничего не получается. Не уверен, что я делаю неправильно здесь.

Solutions Collecting From Web of "Использование get_template_part для получения файла шаблона на основе текущего типа сообщения"

В этом есть поддержка . Хотя я не вижу ничего плохого в вашем коде, попробуйте archive-mytype.php имена файлам в archive-mytype.php формы archive-mytype.php , content-mytype.php и т. Д., А затем вызовите get_template_part следующим образом:

 <!-- This will result in including parts/content-mytype.php --> <?php get_template_part('parts/content', get_post_type( $post )); ?> <p id="t3-splash-title"><?php $post_type = get_post_type_object( get_post_type($post) ); echo $post_type->labels->singular_name ; ?></p> 

Ваша проблема здесь отчасти – это просто плохой PHP и отчасти недоразумение get_template_part .

Вы буквально просите файл с именем «parts / get_post_type ($ post)». Ближе к праву было бы …

 get_template_part('parts/'.get_post_type( $post )); 

Поскольку get_post_type возвращает boolean при get_post_type я бы склонялся к чему-то более подобному, хотя …

 $type = get_post_type($post); if (!empty($post)) { get_template_part('parts/'.$type )); } else { // something or nothing; your choice } 

Теперь get_template_part будет искать имена файлов, такие как «parts / -post-type.php». Он ищет {slug}-{$name} или parameter1-parameter2, который, вероятно, не тот, который вы хотите. Я предполагаю, что ваши файлы на самом деле являются «parts / post-type.php», поэтому вам нужно будет пересмотреть схему именования.