如何添加自定义函数来添加/更新产品?

时间:2017-05-30 作者:fwho

这里的最终目标是一个插件,以便在WooCommerce中添加或更新项目时,我调用一个自定义函数从API中检索其他数据。例如,如果我想添加ISBN 1119327776,我会用该SKU创建一个新产品,然后当我单击“发布”时,我会调用亚马逊产品广告API来收集和插入标题、描述、维度等。问题是,我一直不知道在哪里以及如何实际添加操作。我尝试过:

//test wp_update_post add_action hook
function update_test() {
    echo "this was a success!";
}

add_action( "wp_update_post", "update_test" );

//test save_post add_action hook
function update_test() {
    echo "this was a success!";
}

add_action( "save_post", "update_test" );

//test save_post_product add_action hook
function update_test() {
    echo "this was a success!";
}

add_action( "save_post_product", "update_test" );
我在主题函数文件和自定义插件中都尝试过,但没有成功。然而,当我单击“添加产品”时,使用wp\\u update\\u post确实创建了一个输出,而当我在新产品上单击“发布”时,则没有创建输出。

更新:以下代码确实重置了标题,但在重置之前超时。好像它正在尝试循环所有产品并更新标题。

add_action( "save_post_product", "make_api_call" );
function make_api_call( $post_id ) {
    $datas["ID"]         = $post_id;
    $datas["post_title"] = "this title was reset";
    wp_update_post( $datas );
}

1 个回复
SO网友:fwho

这段代码实际上是有效的。在问题中,我创建了一个关于超时的编辑。这是由于创建了无限循环。以下代码修复了该问题。

function make_api_call( $post_id ) {
    //unhook to avoid infinite loop
    remove_action( "save_post_product", "make_api_call" );

    //make API call and pass data into update array
    $update["ID"]           = $post_id;
    $update["post_title"]   = "this title was reset";

    //update the post
    wp_update_post( $update );

    //re-hook the disabled function
    add_action( "save_post_product", "make_api_call" );
}

add_action( "save_post_product", "make_api_call" );

结束

相关推荐