【解決方法】在庫に基づいてWordPressサイトの製品を並べ替える方法

[ad_1]

こんにちは、WooCommerce ストアのウェブサイトを持っています。 このコードを使用して、在庫に基づいて製品を並べ替えます。 しかし、コードにはエラーがあります。 正しく動作しません。ご指導ください。 WordPress サイトの製品を在庫に基づいて並べ替えるにはどうすればよいですか?

私が試したこと:

add_action('init', function() {
	if( isset($_GET['update_products_arv']) ) {
		$products = wc_get_products( [ 'limit' => 500,'offset' => 200] );
		foreach( $products as $product ){
			$total_stock = $product->get_stock_quantity() ? : 0;
			if( $product->is_type( 'variable' ) ){
				$variations = $product->get_children();
				if( !$variations ) continue;
				foreach ($variations as $variation_id) {
					$variation = wc_get_product( $variation_id );
					$total_stock += $variation->get_stock_quantity() ? : 0;
				}
			}
			update_post_meta($product->get_id(), 'xx_stock', $total_stock);
		}
	}
});

add_action('woocommerce_product_query', function($q) {
	if( ! is_admin() ) {
		$q->set('orderby', 'meta_value_num');
		$q->set('meta_key', 'xx_stock');
		$q->set('order', 'DESC');
	}
});

解決策 1

私たちはあなたを助けることはできません。私たちはあなたの在庫データにアクセスすることができず、エラー メッセージ (ある場合) が何なのか、あるいはあなたが何を期待し、何を受け取ったのか全く知りません。

それはあなた次第です。
幸いなことに、何が起こっているかを調べるのに役立つツール、デバッガーが利用可能です。 ここから始める: php デバッガー – Google 検索[^] そして自分にとって役に立ちそうなものを選んでください。

関数の最初の行にブレークポイントを設定し、デバッガーでコードを実行します。 次に、コードとデータを調べて、手動で何が起こるかを考えます。 次に、各行を 1 ステップずつ実行して、期待したことが実際に起こったかどうかを確認します。 そうでない場合は、問題が発生しているときなので、前に戻って (またはもう一度実行して詳しく調べて) 理由を調べることができます。

申し訳ありませんが、私たちはそれを行うことはできません。新しい (そして非常に便利な) スキルであるデバッグを学ぶ時期です。

[ad_2]

コメント

タイトルとURLをコピーしました