$这在将PHP升级到7.1时不起作用

时间:2018-10-29 19:14:04

标签: php wordpress genesis

我的网站上出现了一些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 :(得分:0)

错误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允许您使用回调函数来引用类,这是原始代码试图执行的操作。但是,如果没有要引用的类,则只需使用可调用函数名称即可。我还考虑将函数名称替换为更独特的名称,因为您不在Class或Namespace中,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' );