#php #wordpress
#php #wordpress
Вопрос:
У меня есть тема WordPress со 100 различными частями шаблона — в идеале я хотел бы иметь возможность указать, какую часть шаблона загружать на основе значения настраиваемого поля post. т.е. Если значение поля post ABC
равно get_template_part ABC-template.php
. Я использую расширенные пользовательские поля для указания полей.
Чтобы получить значение поля, которое вы обычно используете:
<?php the_field('field_name'); ?>
Я попробовал что-то вроде
<?php $var = get_post_meta($post->ID, 'field_name', true);
if ($var == '')
{ }
else { get_template_part( "subdirectory/' . $var . '", "form" );} ?>
но это не сработало. Есть идеи по извлечению значения пользовательского поля и последующей загрузке соответствующей части шаблона с помощью get_template_part?
Я знаю, что теоретически я мог бы достичь этого с помощью функции in_category, но подумал, что необходимость перебирать 100-е «если post in_category ABC загружает шаблон ABC, если post in_category DEF загружает шаблон DEF» каждый раз, когда загружается сообщение, может немного замедлить работу веб-сайта?
Заранее большое вам спасибо, очень ценю любую помощь, которую вы можете предложить 🙂
Редактировать: с тех пор я разобрался с этим (методом проб и ошибок, я не разбираюсь в PHP!)
Вам нужно следующее:
<?php
$fieldname = get_field('fieldname');
get_template_part('subdirectory/' . $fieldname ); ?>
Если у вас есть ABC-DEF, сохраненный в пользовательском поле, это загрузит шаблон в subdirectory/ABC-DEF.php
Надеюсь, это кому-то поможет 🙂
Комментарии:
1. Работает ли это, если вы жестко задаете имя шаблона? Если да
var_dump( $var )
, и посмотрите, что вы получили из базы данных.2. Спасибо за вашу помощь — все работает нормально, если я жестко закодирую имя шаблона — мне просто нужен PHP-код для автоматической вставки значения пользовательского поля в имя шаблона. Я пробовал редактировать примеры кода по адресу advancedcustomfields.com/resources/code-examples но без особого успеха — все они выводят значение пользовательского поля (ABC и т.д.), Но я не могу заставить PHP вставить это значение в get_template_part — извините, я не очень хорошо разбираюсь в PHP — обычно я могу настроить скрипты для работы с тем, что Мне нужно, у меня просто нет возможности писать с нуля. Спасибо, ребята