0

複数の属性を変数製品にインポートするスクリプトを使用しています。
次の形式で属性を取得しています。

ここに画像の説明を入力

コードスクリプトは次のとおりです

    function products_options_values($a) {
    $result = array(array());
    foreach ($a as $k => $list) {
        $_tmp = array();
        foreach ($result as $result_item) {
            foreach ($list as $list_item) {
                $_tmp[] = array_merge($result_item, array($k => $list_item));
            }
        }
        $result = $_tmp;
    }
    return $result;
}   if($attributes = get_result("select * from products_attributes where products_id = X ")){

wp_set_object_terms($product_id, 'variable', 'product_type');
$attrib_array = array();
$attrib_combo = array();
$max_price = $product['products_price'];
$min_price = $product['products_price'];

foreach ($attributes as $attribute) {
    $slug = sanitize_title($attribute['products_options_name']);
    $attrib_array[$slug] = array(
        'name' => $attribute['products_options_name'],
        'value' => ltrim($attrib_array[$slug]['value'] . ' | ' . $attribute['products_options_values_name'], ' | '),
        'position' => 0,
        'is_visible' => 1,
        'is_variation' => 1,
        'is_taxonomy' => 0);
    if($attribute['price_prefix'] == '-')$attributeprefix = '-';
    else if($attribute['price_prefix'] == '+')$attributeprefix = '+';
    else $attributeprefix = '';
    $attrib_combo[$slug][] = array($attribute['products_options_values_name'], $attributeprefix . $attribute['options_values_price']);
}



$combos = products_options_values($attrib_combo);


foreach ($combos as $combo) {

       $variation_id = wp_insert_post(array(
            'post_title' => 'Product ' . $product_id . ' Variation',
            'post_content' => '',
            'post_status' => 'publish',
            'post_type' => 'product_variation',
            'post_author' => 1,
            'post_parent' => $product_id
        ));

    $opt_price = $product['products_price'] .$attributeprefix. $attribute['options_values_price'];
    $special_price = $special['specials_new_products_price'];

    foreach ($combo as $k => $v) {

        update_post_meta($variation_id, 'attribute_' . $k, $v[0]);
        $opt_price += $v[1];
        $special_price += $v[1];
    }
    update_post_meta($variation_id, '_regular_price', $opt_price);
    update_post_meta($variation_id, '_price', $opt_price);
    update_post_meta($variation_id, '_thumbnail_id', 0);
    update_post_meta($variation_id, '_stock', $product['products_quantity']);

    if ($opt_price > $max_price) {
        $max_price = $opt_price;
    }
    if ($opt_price < $min_price) {
        $min_price = $opt_price;
    }
}
update_post_meta($product_id, '_product_attributes', $attrib_array);
update_post_meta($product_id, '_max_variation_regular_price', $max_price);
update_post_meta($product_id, '_min_variation_regular_price', $min_price);
update_post_meta($product_id, '_max_variation_price', $max_price);
update_post_meta($product_id, '_min_variation_price', $min_price);}

このコードを使用すると、属性とバリエーションを正常に作成できます
が、Web サイトを表示して変数製品を選択し、[カートに追加] ボタンをクリックするとエラーが表示されます

無効な値が投稿されました

どこでエラーが発生したか、カバーするメタ フィールドが欠落しているかがわかりません。

いくつかのメタ フィールドやコードの問題が欠落している場合は、先輩を助けてください。

4

1 に答える 1

0

笑いとキックのために-構成ファイルで-ライブサイトはホームURLに設定されていますか、それとも空白ですか? 空であることを確認する必要があります。SEF が適切に構成されていない場合、SEF で非常に奇妙なことがいくつか発生しました。

また、多くのスクリプトが進行中です - 特にそのフロントページでは。SEF がインストールされていない状態でサイトが機能していて、それをオンにしたときにサイトが壊れている場合は、競合が発生している可能性が高くなります。

余談ですが、Joomla のコア SEF は問題なく動作します。サードパーティのものを気にしないでください - あなたは本当にそれを必要としません.

于 2013-05-23T01:34:03.010 に答える