我在多站点平台上下载了一个插件。当我尝试激活它时,它给了我一个错误:
致命错误:在第15行的写上下文中不能使用函数返回值。
第15行:
/* Change to true */
if (false == defined( 'CWCFP_PLUGIN' ) && empty( get_option( 'cwcfp-update-notice-dismissed' ) ) ){
add_action( 'admin_notices', 'cwcf_update_notice' );
}
我尝试将其更改为true已经无法正常工作。
整个代码:
<?php
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
function cwcf_update_notice() {
$url = 'https://conditionalcheckoutfields.com/downloads/conditional-woo-checkout-field-pro/';
$link = sprintf( wp_kses( __( '<a href="%s">Click here</a> to upgrade Conditional Checkout Field to Pro! Get an unlimited number of checkout fields, duplicate checkout fields based on product quantity in the customer\'s cart, and more!', 'conditional-woo-checkout-field' ), array( 'a' => array( 'href' => array() ) ) ), esc_url( $url ) );
?>
<div class="notice notice-info cwcfp-update-notice is-dismissible">
<p><?php echo $link; ?></p>
</div>
<?php
}
/* Change to true */
if (false == defined( 'CWCFP_PLUGIN' ) && empty( get_option( 'cwcfp-update-notice-dismissed' ) ) ){
add_action( 'admin_notices', 'cwcf_update_notice' );
}
add_action( 'admin_enqueue_scripts', 'cwcf_update_notice_assets' );
function cwcf_update_notice_assets() {
wp_enqueue_script( 'cwcfp-notice-update', CWCF_PLUGIN_URL . '/includes/js/notice-update.js', array( 'jquery' ), '1.0', true );
wp_enqueue_script( 'cwcf-notice-review', CWCF_PLUGIN_URL . '/includes/js/notice-review.js', array( 'jquery' ), '1.0', true );
}
add_action( 'wp_ajax_cwcfp_dismiss_notice', 'cwcfp_dismiss_notice' );
function cwcfp_dismiss_notice(){
update_option( 'cwcfp-update-notice-dismissed', '1' );
}
function cwcf_review_notice() {
$url = 'https://wordpress.org/support/plugin/conditional-woo-checkout-field/reviews/#new-post';
$link = sprintf( wp_kses( __( 'Could we ask for a 5 star review of Conditional Checkout Field? It would be greatly appreciated! <a href="%s">Click here</a> to leave a review.', 'conditional-woo-checkout-field' ), array( 'a' => array( 'href' => array() ) ) ), esc_url( $url ) );
?>
<div class="notice notice-info cwcf-review-notice is-dismissible">
<p><?php echo $link; ?></p>
</div>
<?php
}
/* Change to true */
if ( false == defined( 'CWCFP_PLUGIN' ) && empty( get_option( 'cwcf-review-notice-dismissed' ) && !empty( get_option( 'cwcfp-update-notice-dismissed' ) ) ) ){
add_action( 'admin_notices', 'cwcf_review_notice' );
}
add_action( 'wp_ajax_cwcf_review_dismiss_notice', 'cwcf_review_dismiss_notice' );
function cwcf_review_dismiss_notice(){
update_option( 'cwcf-review-notice-dismissed', '1' );
}
答案 0 :(得分:3)
尝试改变:
if (false == defined( 'CWCFP_PLUGIN' ) && empty( get_option( 'cwcfp-update-notice-dismissed' ) ) ){
// ...
为:
$cwcfp_update_notice_dismissed = get_option( 'cwcfp-update-notice-dismissed' );
if (false == defined( 'CWCFP_PLUGIN' ) && empty( $cwcfp_update_notice_dismissed ) ){
// ...
在PHP 5.5之前,empty()仅支持变量;其他任何东西都会导致解析错误。换句话说,以下将不起作用:empty(trim($ name))。相反,使用trim($ name)== false。
更多信息:http://php.net/manual/en/function.empty.php
如果要检查用户,请忽略通知。更好用:
if (false == defined( 'CWCFP_PLUGIN' ) && get_option( 'cwcfp-update-notice-dismissed', false ) == true ){
// ...
以上代码将检查:
cwcfp-update-notice-dismissed
表中不存在_options
或没有值,请返回默认值 false 。用户首次安装时会看到通知,或者没有选中以解除复选框。cwcfp-update-notice-dismissed
存在,请获取其值而不是默认值。更多信息:https://developer.wordpress.org/reference/functions/get_option/