$ это не работает при обновлении PHP до 7.1 - PullRequest
0 голосов
/ 29 октября 2018

Я получаю сообщение об ошибке на моем сайте с некоторым кодом PHP. Состояние ошибки

Неустранимая ошибка: необученная ошибка: использование $ this, когда не в контексте объекта

function search_shortcode() {
    return '<div class="genesis-404-search">' . get_search_form( false ) . '</div>';
}

// Add shortcode for search form in Genesis Framework
add_shortcode( 'genesis-404-search', array( $this, 'search_shortcode' ) );

1 Ответ

0 голосов
/ 29 октября 2018

Ошибка Fatal error: Uncaught Error: Using $this when not in object context означает, что что-то ссылается на класс / объект с помощью $this, в то время как в текущей области нет класса / объекта.

Если код, который вы разместили:

function search_shortcode() {
    return '<div class="genesis-404-search">' . get_search_form( false ) . '</div>';
}

// Add shortcode for search form in Genesis Framework
add_shortcode( 'genesis-404-search', array( $this, 'search_shortcode' ) );

Заворачивается в класс следующим образом: class Some_Class { /* Your Code */ }, тогда что-то еще играет.

Если нет, и это просто нативно, как вы опубликовали, замените:

add_shortcode( 'genesis-404-search', array( $this, 'search_shortcode' ) );

с

add_shortcode( 'genesis-404-search', 'search_shortcode' );

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

function so_53052312_search_shortcode() {
    return '<div class="genesis-404-search">' . get_search_form( false ) . '</div>';
}

// Add shortcode for search form in Genesis Framework
add_shortcode( 'genesis-404-search', 'so_53052312_search_shortcode' );
...