Добавление к functions.php в дочерней теме не работает - PullRequest
0 голосов
/ 14 декабря 2018

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

/**
 * ----------------------------------------------------------------------------------------
 * Custom Search Form
 * ----------------------------------------------------------------------------------------
 */

function infinity_search_form( $value = false ) {
    $placeholder = esc_html__( 'Search...', 'flexblog');
    if ( $value === true ) {
        $placeholder = esc_html__('Type and hit Enter...', 'flexblog');
    }

    $form  = '<form method="get" action="'. esc_url( home_url( '/' ) ) .'" class="infinity-search" >';
        $form .= '<input id="s" class="search_input" type="text" name="s" placeholder="'. $placeholder .'">';
        $form .= '<button type="submit" class="submit button" name="submit" ><i class="fa fa-search" ></i></button>';
    $form .= '</form>';

    return $form;
}

add_filter( 'get_search_form', 'infinity_search_form' );

И все, что я хочу изменить, это «Введите и нажмите Enter ...».Я перевожу текст, затем копирую и вставляю все в functions.php дочерней темы, как я это делал здесь (но с переведенным текстом).Текст не отображается как переведенный в блоге (отображается так же), а бэкэнд (WP dashboard) просто ломается полностью (он говорит, что есть какая-то ошибка в functions.php - оригинальной, хотя она не тронута -в строке XXX, где находится исходный код, который я изменил в файле functions.php дочерней темы).

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

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

Кто-нибудь знает, что я делаю не так?

Спасибо!

1 Ответ

0 голосов
/ 14 декабря 2018

В зависимости от того, как функция написана в родительской теме, вы можете переопределить родительскую функцию.В родительском файле functions.php это подключаемая функция (выглядит ли она так)?

if ( ! function_exists( 'infinity_search_form' ) ) {
    function infinity_search_form( $value = false ) {

Если это выглядит так, просто объявите новую копию функции в функциях дочерней темы..php файл.

Если это не так, то функция не подключаема, и вам придется инициализировать ее другим способом.Лучше всего было бы объявить это после родительского объявления (см. Пример ниже):

function infinity_search_form( $value = false ) {
    $placeholder = esc_html__( 'Search...', 'flexblog');
    if ( $value === true ) {
        $placeholder = esc_html__('Type and hit Enter...', 'flexblog');
    }

    $form  = '<form method="get" action="'. esc_url( home_url( '/' ) ) .'" class="infinity-search" >';
    $form .= '<input id="s" class="search_input" type="text" name="s" placeholder="'. $placeholder .'">';
    $form .= '<button type="submit" class="submit button" name="submit" ><i class="fa fa-search" ></i></button>';
    $form .= '</form>';

    return $form;
}
add_action( 'init', 'infinity_search_form', *A NUMBER LARGER THAN THE PARENT DECLARATION*);

Вот раздел кодекса WordPress, который может быть полезен: https://codex.wordpress.org/Child_Themes#Using_functions.php

иВот учебное руководство, которое может объяснить все это более подробно: https://code.tutsplus.com/tutorials/a-guide-to-overriding-parent-theme-functions-in-your-child-theme--cms-22623

--- ОБНОВЛЕНО 2018-12-17 --- В случае, если повторное объявление методане поддерживается родительской темой, поэтому вам, вероятно, придется попробовать одно из 2 следующих решений:

1) Попробуйте удалить родительскую функцию и повторно объявить ее в файле functions.php дочерней темы: https://wordpress.stackexchange.com/questions/273941/how-to-override-parent-theme-function-through-the-child-theme#answer-273955

2) Следуйте примечанию ArtisticPhoenix и создайте свою собственную функцию, которую вы вызываете самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...