WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

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

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

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

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

0
Sergei
2.5 лет назад -9
  • 0
    Kama9649
    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 11 месяцев назад

    В 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 11 месяцев назад

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

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

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

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

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

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

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

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

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

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

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

    <?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 11 месяцев назад

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

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

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

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