如何使用WooCommerce操作挂钩?

时间:2012-05-13 作者:user1095118

我想知道您将如何实现以下挂钩。

do_action( \'woocommerce_process_product_meta_\' . $product_type, $post_id );
从插件文件调用调用操作的正确方法是什么。下面是我目前正在使用的代码,但它不起作用。

global $post, $thepostid, $woocommerce;

function new_post_meta () {
    if (isset($_POST[\'location\'])) 
        update_post_meta( $post_id, \'location\', json_encode($_POST[\'location\']) );      
}

add_action( \'woocommerce_process_product_meta_\' .$product_type, \'new_post_meta\' );

2 个回复
SO网友:helgatheviking

如果您不希望元字段特定于特定的产品类型,可以执行以下操作(这是我在自己的WooCommerce扩展中所做的)。

function new_post_meta () {
    if (isset($_POST[\'location\'])) 
        update_post_meta( $post_id, \'location\', json_encode($_POST[\'location\']) );      
}

add_action( \'woocommerce_process_product_meta\', \'new_post_meta\' );
或者将其限制为特定的产品类型:

function new_post_meta () {
    if (isset($_POST[\'location\'])) 
        update_post_meta( $post_id, \'location\', json_encode($_POST[\'location\']) );      
}

add_action( \'woocommerce_process_product_meta_simple\', \'new_post_meta\' );
其中,“simple”是产品类型。

SO网友:Eugene Manuilov

例如,您有两种产品类型:product1和product2。然后您将有两个动作调用:woocommerce_process_product_meta_product1woocommerce_process_product_meta_product2. 因此,您需要添加如下挂钩:

function new_post_meta1 () {
    if (isset($_POST[\'location\'])) 
        update_post_meta( $post_id, \'location\', json_encode($_POST[\'location\']) );       
}
add_action( \'woocommerce_process_product_meta_product1\', \'new_post_meta1\' );

function new_post_meta2 () {
    if (isset($_POST[\'location\'])) 
        update_post_meta( $post_id, \'location\', json_encode($_POST[\'location\']) );       
}
add_action( \'woocommerce_process_product_meta_product2\', \'new_post_meta2\' );

结束

相关推荐

Beta Versioning of Plugins

当我为一些bug编写修复程序时,我通常会增加版本并将其发送给bug查找程序,以查看我的修复程序是否有效。如果我有1.2.5 我想创建一个测试版,一旦我提交代码,它将变得多余,我应该使用1.2.5-beta 或1.2.6-beta? 我担心的是1.2.6 <;1.2.6-beta 因此,字符串比较可能有利于beta版,而bug查找程序不会收到发布稳定版本的通知。编辑:如果在不考虑发布类型的情况下对字符串进行绝对比较,则可以使用1.2.5-fix 然后1.2.6. 该问题也概述在http://en.wik