WordPress как на ладони

Вынесение повторяющейся части кода в отдельный .php файл

Предположим, у меня на нескольких страницах повторяется определённая часть html кода (но не header и не footer). Хочу создать отдельный .php файл и скопировать туда эту часть и подключать этот файл там, где необходимо через php скрипт. По какому принципу необходимо называть такие файлы и с помощью какого скрипта их можно подключать ?

Заметки к вопросу:
stepan 2.2 года назад

почитайте PHP для чайника. Там будет про подключ файлов.
А как называть - как вам захочется.

0
Sergei
2.2 года назад -9
  • 0
    Kama9602
    1. Создай папку в теме например tpl-parts.
    2. Создай там php файл например section1.php.
    3. Добавь в этот файл повторяющийся код.
    4. Подключи этот фай в шаблоне с помощью get_template_part():

      get_template_part( 'tpl-parts/section1' );
      
      // или так с передачей параметров
      $args = 'Какая-то строка';
      get_template_part( 'tpl-parts/section1', null, $args );
    riggo 8 месяцев назад

    В php делаю первые шаги. Есть несколько идентичных шаблонов для разных разделов, отличающихся лишь параметром id для вывода разных категорий записей. Подскажите, можно ли использовать их в данном section.php, где передавать в аргументе только изменяемый ID. Вот тут:

    <!-- Цикл вывода материалов категории по ID -->
    <?php global $post; $args = array( 'numberposts' => 10 , 'category' => 15, 'orderby' => 'date');
    	$myposts = get_posts( $args );
    	foreach( $myposts as $post ){ setup_postdata($post); ?>

    Что-то вроде (в исходном шаблоне):

    <?php $args = array( 'numberposts' => 10 , 'category' => 153, 'orderby' => 'date');
    get_template_part( 'tpl-parts/section1', null, $args ); ?>

    А в section1:

    <!-- Цикл вывода материалов категории по ID -->
    <?php global $post; $args;
    	$myposts = get_posts( $args );
    	foreach( $myposts as $post ){ setup_postdata($post); ?>

    Так?

    Или, еще лучше, автоматом подхватывать название категории из текущего имени раздела (из сайт/раздел-N передавать "раздел-N" на сайт/category/раздел-N)

    Kama 8 месяцев назад

    Да можно, и наверное даже нужно. Просто попробуй сам и разберешься что и как там работает. Дока в помощь: get_template_part().

    riggo 8 месяцев назад

    Сделал по приведенной выше схеме (с явным указанием номера категории). Все работает, но все равно приходится для каждого раздела создавать свой шаблон для передачи номера ID. Но как сделать один универсальный шаблон, чтобы ID/имя категории подхватывались из url раздела, не знаю

    Kama 8 месяцев назад

    Может этот пример поможет.

    riggo 8 месяцев назад

    $cat_id и $cat_name через get_query_var не сработало. У меня совпадают имена страниц и имена категорий (страница - сайт/cat1, категория - сайт/category/cat1), но ID у них разные. И мне надо возвратить имена страниц и подставить их в имена категорий записей

    Kama 8 месяцев назад

    А get_queried_object() тоже не подошел?

    riggo 8 месяцев назад

    Попробовал такую конструкцию:

    <?php $slug_name = get_query_var('name'); ?>
    <div>Name: <?php echo $slug_name; ?></div>
    <div>ID: <?php $slug_id = get_queried_object_id($slug_name)->term_id; echo $slug_id; ?></div>
    
    <?php $args = array( 'numberposts' => 10 , 'category' => $slug_id , 'orderby' => 'date' ); ?>

    Имя слага страницы получил, но преобразовать его в ID одноименной категории и передать в аргумент categoty не вышло

    riggo 8 месяцев назад

    Заработало так:

    <!-- Передача переменных в подшаблон -->
    <?php $slug_name = get_query_var('name'); ?>
    <?php $args = array( 'numberposts' => 10 , 'category_name' => $slug_name , 'orderby' => 'date' ); ?>
    Kama 8 месяцев назад
    $slug_id = get_queried_object_id($slug_name)->term_id;
    // надо было так:
    $term_id = get_queried_object()->term_id;

    Но get_query_var('name') вроде тоже норм вариант.

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация