Ошибка 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' );