get_template_part () с подчеркиванием из основной папки - PullRequest
0 голосов
/ 09 ноября 2019

Мне нужна дочерняя копия файла listings_recently.php, чтобы внести в него изменения. Мне нужно включить этот файл в мою дочернюю тему: /themes/listingeasy/core/widgets/listings_recently.php

Насколько я знаю, мне нужно указать теме, чтобы искать этот файл. И это сделано в моей детской теме functions.php верно?

Так что это мое functions.php:

get_template_part('get_stylesheet_directory() . "/core/widgets/listings"', 'recently');
get_template_part('get_stylesheet_directory() . "/core/widgets/listings_recently.php"');

Не работает ни одна из 2 строк.

Какмне нужно продолжить? Вот схема папки:

themes
    listingeasy
        single.php
        core
            widgets
                listing_recently.php
    listingeasy-child
        functions.php
        single.php (I made changes here and its working)
        core
            widgets
                listing_recently.php (Changes here aren't working)

Ответы [ 3 ]

0 голосов
/ 12 ноября 2019

Я создал дочернюю тему темы twentyninteeen, чтобы воспроизвести ваш сценарий. Структура папок дочерней темы выглядит следующим образом.

Folder Structure

functions.php

<?php
add_action( 'wp_enqueue_scripts', 'enqueue_child_theme_styles', PHP_INT_MAX);
function enqueue_child_theme_styles() {
  wp_enqueue_style( 'parent-style', get_template_directory_uri().'/style.css' );
}

get_template_part( 'core/widgets/listings_recently' );

lists_recently.php

<h1>Sagar Tamang</h1>;

<?php

Вам необходимо использовать get_template_part( 'core/widgets/listings_recently' );, чтобы включить файлы с подчеркиванием. Если вы использовали функцию get_template_part() в файле functions.php, вывод будет выше тега HTML.

enter image description here

0 голосов
/ 13 ноября 2019

Полагаю, теперь я понимаю, что вы пытаетесь сделать здесь. Похоже, вы пытаетесь добавить копию файла в свою дочернюю тему, чтобы вы могли отредактировать этот файл и сделать так, чтобы эти изменения перезаписывали родительский, не изменяя файл родительской темы. Это не изначально поддерживаемое действие для произвольных файлов php, только для файлов шаблонов тем .

Вам необходимо переместить его в основной каталог тем, так же как и в файл single.php, и указать для него подходящее имя файла иерархии тем. Вот почему ваши изменения для файла single.php работают, а для этого конкретного файла - нет. Single.php - это известный шаблон, ваш файл - это просто добавленный вами php-файл.

В качестве альтернативы, вы можете внести изменения в файл lists_recently.php и заменить текущую версию в родительской теме. Если вы беспокоитесь о потере старой версии, сохраните ее на рабочем столе или используйте систему управления версиями, например GitHub. Вероятно, это лучший способ сделать это.

Третий вариант - внести жестко запрограммированные изменения в файл functions.php дочерней темы.

0 голосов
/ 09 ноября 2019

Я не знаю вашу тему. Но когда вы хотите отредактировать функции в lists_recently.php, вы можете попытаться скопировать эти функции в файл дочерних тем functions.php и отредактировать их там. Большую часть времени это работает.

С уважением, Том

Редактировать: try require ();в ваших дочерних темах functions.php:

require('core/widgets/listings_recently.php');

Редактировать 2 (см. комментарий, сама тема имеет свой собственный get_template_directory ())

get_template_directory() 

возвращаетпуть к каталогу вашего родительского шаблона. Используйте

get_stylesheet_directory() 

, чтобы вернуть путь к каталогу дочерних тем

...