我们一直很好地使用WooCommerce订阅,但是当从用户的“我的帐户”部分查看订单时,它开始引起问题,打开WP_DEBUG显示如下:
未捕获的错误:在/wp-content/plugins/woocommerce-subscriptions/includes/wcs-user-functions.html" target="_blank">php:381中调用bool中的成员函数get_user_id()
第381行是:
if ( $user_id === $subscription->get_user_id() ) {
$allcaps['edit_shop_subscription_status'] = true;
}
break;
鉴于这是一个官方插件,我不确定问题是如何发展的,我也有堆栈跟踪:
堆栈跟踪:#0/wp-inclused/class-wp-hook.php(289):wcs_user_has_capability(数组,数组,数组)#1/wp-inclused/plugin.php(212):wp_hook->apply_filters(数组,数组)#2/wp-inclused/class-wp-user.php(783):apply_filters('user_has_cap',数组,数组,数组,数组,对象(WP_User))#3/wp-inclused/capilities.php
完整的代码块:
/**
* Checks if a user has a certain capability
*
* @access public
* @param array $allcaps
* @param array $caps
* @param array $args
* @return array
*/
function wcs_user_has_capability( $allcaps, $caps, $args ) {
if ( isset( $caps[0] ) ) {
switch ( $caps[0] ) {
case 'edit_shop_subscription_payment_method' :
$user_id = $args[1];
$subscription = wcs_get_subscription( $args[2] );
if ( $subscription && $user_id === $subscription->get_user_id() ) {
$allcaps['edit_shop_subscription_payment_method'] = true;
}
break;
case 'edit_shop_subscription_status' :
$user_id = $args[1];
$subscription = wcs_get_subscription( $args[2] );
if ( $user_id === $subscription->get_user_id() ) {
$allcaps['edit_shop_subscription_status'] = true;
}
break;
case 'edit_shop_subscription_line_items' :
$user_id = $args[1];
$subscription = wcs_get_subscription( $args[2] );
if ( $user_id === $subscription->get_user_id() ) {
$allcaps['edit_shop_subscription_line_items'] = true;
}
break;
case 'switch_shop_subscription' :
$user_id = $args[1];
$subscription = wcs_get_subscription( $args[2] );
if ( $user_id === $subscription->get_user_id() ) {
$allcaps['switch_shop_subscription'] = true;
}
break;
case 'subscribe_again' :
$user_id = $args[1];
$subscription = wcs_get_subscription( $args[2] );
if ( $user_id === $subscription->get_user_id() ) {
$allcaps['subscribe_again'] = true;
}
break;
case 'pay_for_order' :
$user_id = $args[1];
$order = wc_get_order( $args[2] );
if ( $order && wcs_order_contains_subscription( $order, 'any' ) ) {
if ( $user_id === $order->get_user_id() ) {
$allcaps['pay_for_order'] = true;
} else {
unset( $allcaps['pay_for_order'] );
}
}
break;
}
}
return $allcaps;
}
add_filter( 'user_has_cap', 'wcs_user_has_capability', 15, 3 );
使用print_r,$user_id给出了一个结果,但我不能从$subscription中得到任何东西--它是否只为不在订阅计划中的用户显示错误?任何指针都是非常有用的。
由于问题似乎是返回布尔值的wc_subscription
对象,请改用:
if ( is_a( $subscription, 'WC_Subscription' ) && $user_id === $subscription->get_user_id() ) {
$allcaps['edit_shop_subscription_status'] = true;
}
它应该能解决这个问题。
我收到WordPress发来的关于致命错误的消息。它与WPML字符串翻译插件后端中的特定页面相关。我认为有一个特别的翻译: 访问发现错误的页面(xxxxxxxx/wp admin/admin.php?page=wpml translation management/menu/translations-queue.php) 它还说 错误详细信息===========在文件/nas/content/l
这是三个文件 我得到一个错误“Fatal error:Uncattle error:Call to a member function prepare()on null”。这段代码运行在我的localhost上没有问题,但是当它上传到服务器时,我就出现了这个问题。我在本地使用PHP8和xammp软件。我是三年级学生,请帮帮我。 文件database.php: } 文件admin.php
我正在尝试使用PHP在WooCommerce中创建一个自定义优惠券代码,它基本上会将购物车中标签名为“main”的每件商品的价格折扣到10。它通过计算购物车中标记为“main”的商品数量,然后计算每个商品的总价,并由此计算$折扣变量中所需的折扣。请参见下面的代码: 当我尝试激活此代码时,会收到以下错误消息: 您试图保存的代码段在第4行产生了致命错误: 未捕获错误:在/homepages/9/d39
(操作系统:Windows 10;XAMPP v3.2.2;Visual Studio代码1.20.0) 我对php mysqli有一个问题。它说mysqli_connect函数没有定义。我尝试过很多解决方案——甚至在堆栈溢出中——但这些解决方案都不适合我。 我已经将PHP从5升级到7。在我的phpinfo中,似乎没有启用mysqli。所以我检查了是否有php_mysqli。我的php文件夹中的d
好吧,我知道我试图混合mysql和MySQLI....
我想看看我的WordPress主题,我收到了这个错误: 致命错误:未捕获错误:调用未定义的函数have_post()在C:\xampp\htdocs\wordpress\wp-内容\主题\ChachoTheme\index.php: 6堆栈跟踪:#0 C:\xampp\htdocs\wordpress\wp-包括\template-loader.php(74):包括()#1 C:\xampp\HT