WordPress在wp_set_Object_Terms行显示致命错误

时间:2018-09-26 作者:H.Jaware

我想以编程方式设置一些产品类别。当一个新产品发布时,它正在工作。但当我可以更新它时,它会显示一个错误,如:后端致命错误:PHP致命错误:无法在插件/自定义同步产品/trade\\u函数中使用WP\\u error类型的对象作为数组。php第100行\\n.任何人都可以帮助我解决此错误。

function set_product_category_woo($T_product_type,$post_id){

    $product_categories = term_exists($T_product_type,"product_cat");

    if(empty($product_categories)){
        $slug=str_replace(" ","_",$T_product_type);
        $resp=wp_insert_term($T_product_type,\'product_cat\',array(\'description\'=> \'\',\'slug\' =>$slug));

        /****assign category to the product in woo***/
        if(isset($resp)){
            wp_set_object_terms($post_id,$resp[\'term_id\'], \'product_cat\' );
        }else{
            file_put_contents("text.txt","\\n".print_r($resp),FILE_APPEND); 
        }

1 个回复
SO网友:realloc

wp_insert_term 成功时返回数组,出现问题时返回WP\\u错误。

您应该捕捉错误并查找失败的原因。

一个问题可能是,如何创建slug,因为它可能会在创建术语的过程中导致错误。仅使用$slug = sanitize_title( $T_product_type ) 或者,更好的是,让函数wp_insert_term 为您创建一个独特的slug。

另一件事是名字本身。根据我之前写的内容,我建议如下更改您的代码:

function set_product_category_woo( $T_product_type, $post_id ) {
    $name = trim( stripslashes( $T_product_type ) );
    if ( empty( $name ) ) {
        return;
    }

    $product_categories = term_exists( $name, \'product_cat\' );
    if ( empty( $product_categories ) ) {
        $resp = wp_insert_term( $name, \'product_cat\' );

        if ( ! is_wp_error( $resp ) ) {
            wp_set_object_terms( $post_id, $resp[\'term_id\'], \'product_cat\' );
        }

        // rest of your code

结束