如何测试unctions.php中的类(来自插件)

时间:2018-10-06 作者:omega33

我为函数添加了各种代码更改。php。其中许多依赖于某些活动插件,因为它们引用这些插件定义的类。

如果插件被禁用,将导致500服务器错误,因为找不到相应的类。

有没有办法先考一门课?

例如,以下函数依赖于WooCommerce扩展中的类。

//  Add prices to variations 
add_filter( \'woocommerce_variation_option_name\', \'display_price_in_variation_option_name\' ); 
function display_price_in_variation_option_name( $term ) { 
global $wpdb, $product; 
$result = $wpdb->get_col( "SELECT slug FROM {$wpdb->prefix}terms WHERE name = \'$term\'" ); 
$term_slug = ( !empty( $result ) ) ? $result[0] : $term; 
$query = "SELECT postmeta.post_id AS product_id FROM {$wpdb->prefix}postmeta AS postmeta LEFT JOIN {$wpdb->prefix}posts AS products ON ( products.ID = postmeta.post_id ) WHERE postmeta.meta_key LIKE \'attribute_%\' AND postmeta.meta_value = \'$term_slug\' AND products.post_parent = $product->id"; 
$variation_id = $wpdb->get_col( $query ); 
$parent = wp_get_post_parent_id( $variation_id[0] ); 
if ( $parent > 0 ) { $_product = new WC_Product_Variation( $variation_id[0] ); 
  //$itemPrice = \'   \' . strip_tags (woocommerce_price( $_product->get_price() ));
    //this is where you can actually customize how the price is displayed
  //return $term . \' (\' . $itemPrice . \')\'; 
  $curr = get_woocommerce_currency_symbol(); //get_option(\'woocommerce_currency\');
  $regular_price = trim($_product->regular_price);
  $sales_price = trim($_product->sale_price);
  if($sales_price == \'\' || $regular_price == $sales_price) { return $term . \' (\' . $curr.$regular_price . \')\'; }
  else { return $term . \' (Was \' . $curr.$regular_price . \', Now \' . $curr.$sales_price . \')\'; }
} return $term; 
} 

global $woocommerce;
$product_variation = new WC_Product_Variation($_POST[\'variation_id\']);
$regular_price = $product_variation->regular_price;
但是如果相关插件被禁用,PHP将生成错误,"PHP message: PHP Fatal error: Uncaught Error: Class \'WC_Product_Variation\' not found in ... /functions.php:266

所以我需要先测试一下WC_Product_Variation 在运行此函数之前定义。

1 个回复
最合适的回答,由SO网友:KAGG Design 整理而成

你应该使用标准的php函数

if class_exists(\'WC_Product_Variation\') { ...} 

结束

相关推荐

对WooCommerce的Functions.php更改不起作用

我正在尝试将其添加到函数中。php。在我的另一个站点上的测试实验室中,它可以很好地添加测试信息。但在这个网站上,我试图把它添加到什么都没有发生的情况下。该网站正在使用最新的woocommerce运行一个建筑节俭主题。有什么想法吗?我基本上只是想在每个产品页面上添加一行类似于免责声明但无法添加的文本。add_action(\'woocommerce_before_add_to_cart_form\',\'print_something_below_short_description\');