Возможно ли в текущей иерархии именования файлов темы определить шаблон для всех страниц, являющихся дочерними для определенной страницы? Например, в этой навигации:
О нас
- Контакт
- Кто мы есть
- Заявление о сообщении
Есть ли способ просто создать файл темы с именем, например:
страница-о-нас-all.php
Это будет автоматически применяться ко всем страницам, которые являются дочерними страницами «О нас»?
ОБНОВИТЬ
Я пошел с модифицированной версией того, что предложил Bainternet. Вот функция-потомок, с которой я столкнулся:
function is_descendant($ancestor, $tofind = 0) {
global $post;
if ($tofind == 0) $tofind = $post->ID;
$arrpostids = get_post_ancestors($tofind);
$arrpostslugs = array();
foreach($arrpostids as $postid) {
$temppost = get_post($postid);
array_push($arrpostslugs, $temppost->post_name);
}
return (in_array($ancestor, $arrpostids) || in_array($ancestor, $arrpostslugs));
}
// Example use:
is_descendant('about-us');
is_descendant(123);
is_descendant('about-us', 134);
Это позволяет мне проверить, является ли он потомком, используя либо идентификатор родителя, либо слаг. Я был обеспокоен тем, что использование только идентификатора может привести к проблеме, если родительская страница будет случайно удалена из корзины, и не будет хорошего способа заставить ее снова работать без необходимости редактировать файлы темы. По крайней мере, с слагом есть возможность просто зайти и создать новую страницу с тем же слагом и иерархией.
Вы хотите, чтобы это работало для всех дочерних страниц вашего сайта или только для дочерних страниц «О нас» ?
объявление
is_descendant()
: есть некоторые вещи, которых следует избегать в отношении скорости: подсчет, проверка массива и другие вещи, которые «делают» что-то еще, кроме простого представления значения, обработанного ранее, внутри if/elseif/for/foreach/while — в любом случае: faved & + 1У меня есть удобная маленькая условная функция, сделанная на заказ, которая сделает эту работу за вас.
Функция:
Применение:
Теперь вы спросите, как это может вам помочь?
После того, как вы сохранили эту функцию в файле functions.php вашей темы, отредактируйте файл вашей темы
page.php
и добавьте в самом верху что-то вроде этого:Готово! Примечание: этот код предполагает, что идентификатор вашей страницы «О странице»: 12, а файл вашей темы называется:
page-about-us-all.php
.