我的函数中有一个代码片段。正常工作的php文件。。。
/**
* Disable free shipping for select products
*
* @param bool $is_available
*/
function my_free_shipping( $is_available ) {
global $woocommerce;
$ineligible = array( \'4616\', \'14031\' );
$cart_items = $woocommerce->cart->get_cart();
foreach ( $cart_items as $key => $item ) {
if( in_array( $item[\'product_id\'], $ineligible ) ) {
return false;
}
}
return $is_available;
}
add_filter( \'woocommerce_shipping_free_shipping_is_available\', \'my_free_shipping\', 20 );
然而,我不希望我的客户干扰功能。php文件,所以我制作了一个插件。
创建了一个“我的插件”文件夹,并在该文件夹中创建了一个“我的插件”。php文件。在该PHP文件中,我复制并粘贴了上述函数,并将其从函数中删除。php。一旦我这样做了,它就停止工作了。
因为插件与函数位于不同的文件夹中。php文件,我假设我必须添加一些东西才能从我的插件文件夹中读取,但我不确定这是什么。我甚至不确定add\\u过滤器是否可以在函数之外使用。php文件。
编辑以包含完整插件文件
<?php
/*
Plugin Name: WooCommerce - Disable Free Shipping
Plugin URI: http://www.gfishdesigns.com
Description: Allows the user to disable free shipping on a per product basis by entering in the IDs of specific products.
Author: Karen Gill
Version: 1.0
Author URI: http://www.gfishdesigns.com
Copyright 2016 Karen Gill (email : [email protected])
*/
/**
* Disable free shipping for select products
*
* @param bool $is_available
*/
function my_free_shipping( $is_available ) {
global $woocommerce;
$excluded = array( \'4616\', \'14031\' );
$cart_items = $woocommerce->cart->get_cart();
foreach ( $cart_items as $key => $item ) {
if( in_array( $item[\'product_id\'], $excluded ) ) {
return false;
}
}
return $is_available;
}
add_filter( \'woocommerce_shipping_free_shipping_is_available\', \'my_free_shipping\', 20 );
#---------------------------------------------------
# Load CSS
#---------------------------------------------------
function dfs_load_scripts() {
wp_enqueue_style( \'style-name\', plugins_url( \'/dfs-plugin/dfs_plugin_style.css\' ) );
}add_action( \'wp_enqueue_scripts\', \'dfs_load_scripts\' );
#---------------------------------------------------
# Load other plugin files and configuration
#---------------------------------------------------
include_once(plugin_dir_path( __FILE__ ) . \'dfs-plugin-shortcode.php\');
include_once(plugin_dir_path( __FILE__ ) . \'dfs-plugin-options.php\');
?>
SO网友:bosco
加载WordPress后,过滤器和操作操作的功能在任何时候都可用wp-includes/plugin.php
- 这种情况很早就发生了,因为WordPress本身依赖于这些函数,所以主题文件和插件文件都可以访问它们。
您需要添加header information 这样WordPress就可以将其识别为插件,然后在安装的管理仪表板中激活该插件。
/*
Plugin Name: My Plugin
Description: Disable free shipping for select products
Author: Keryn Gill
*/
/**
* Disable free shipping for select products
*
* @param bool $is_available
*/
function my_free_shipping( $is_available ) {
global $woocommerce;
$ineligible = array( \'4616\', \'14031\' );
$cart_items = $woocommerce->cart->get_cart();
foreach ( $cart_items as $key => $item ) {
if( in_array( $item[\'product_id\'], $ineligible ) ) {
return false;
}
}
return $is_available;
}
add_filter( \'woocommerce_shipping_free_shipping_is_available\', \'my_free_shipping\', 20 );
或者,将插件文件直接放入
wp-content/mu-plugins
让WordPress将其解释为
must-use plugin - 这将从仪表板列表中删除插件,并将其视为始终处于活动状态。这种做法最好为您自己的代码保留,因为放置在此目录中的第三方插件不会触发激活/停用挂钩,也不会收到自动更新。