2017-08-03 2 views
1

私の製品の多くは、£3.4560などの価格があります。丸めてデータベース内の2個にする必要があります。すべてのWooCommerce製品の価格をデータベースの小数点以下2桁に更新する

WooCommerceの小数点以下2桁の出力では不十分で、Tax Toggleプラグインで動作しません。

これを行うデータベースクエリがありますか?

私は丸めと切り捨てにいくつかのビットを見ましたが、私の知識が乏しいのでこれを実行する方法がわかりません。

何か助けていただければ幸いです。

+0

大丈夫ですので、以下のコードは動作し、データベースの価格を小数点以下2桁に変更します。ただし、プラグインを使用するには、ボタンをクリックして製品を更新する必要があります。私はこれが内容をリフレッシュすると思いますか?だから私が必要とするのは、すべての製品が「更新」されることです。 これはTax Toggleのプラグインの作者からのものです。 「どのようにWooに製品を入力したのかわからないが、そのプロセスを見ていると、一旦製品を再保存(更新)すれば動作することがわかるので、woocommerceセーブで価格がインポートされていないしたがって、誤ってインポートされています。 –

答えて

0

アップデート2:ここでは(すべての関連製品の過渡キャッシュをクリアするためにいくつかのコードを追加しました)

は、すべての製品価格を更新するいくつかのコードは、(前にデータベースのバックアップを作成する)である。

global $wpdb; 
$postmeta = $wpdb->prefix . "postmeta"; 
$posts = $wpdb->prefix . "posts"; 

// 1. First query: Get all prices 
$results = $wpdb->get_results(" 
    SELECT $postmeta.* 
    FROM $postmeta 
    INNER JOIN $posts ON $postmeta.post_id = $posts.ID 
    WHERE $posts.post_type LIKE '%product%' 
    AND $postmeta.meta_key LIKE '%price%' 
    AND $postmeta.meta_value != '' 
    ORDER BY $postmeta.meta_id ASC 
"); 

// iterating through each price and update it 
foreach($results as $result){ 
    $meta_id = $result->meta_id; 
    $post_id = $result->post_id; 
    $meta_key = $result->meta_key; 
    $meta_value = number_format($result->meta_value, 2); 

    // 2. Udating prices query 
    $wpdb->query($wpdb->prepare(" 
     UPDATE $postmeta 
     SET meta_id = $meta_id, post_id = $post_id, meta_key = '$meta_key', meta_value = '$meta_value' 
     WHERE $postmeta.meta_id = %d 
    ", $meta_id)); 

    // 3. Clear all related product transient cached data (refresh prices) 
    wc_delete_product_transients($post_id); 
} 

コードは、アクティブな子テーマ(またはテーマ)のfunction.phpファイル、またはすべてのプラグインファイルに入ります。

Once saved, just browse any page of your site, check your database wp_postmeta table searching for ‰price‰ LIKE meta_key. Now you can remove this code.

+0

ありがとうございます。あなたが言うように、コードを正確に保存すると、このエラーが発生します。 '構文エラー、予期しない' 2000 '(T_LNUMBER)、予期している変数(T_VARIABLE)' –

+0

これは、必要なタスクを完了できません。これは、エディタでファイルを何度も更新した後でも、製品価格を小数点以下2桁に変更しません。価格はまだ小数点以下4桁です。ここを参照してください - http://imgur.com/a/6SutJ @LoicTheAztec –

+0

ありがとうLoic!価格は今データベースで2小数に変更されました。ただし、フロントエンドで作業するには、各製品を更新ボタンで手動で更新する必要があります。あなたは一度にすべての製品を更新する方法を知っていますか? –

関連する問題