0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

WordPress【WooCommerce】アップセル自動相互登録機能

Last updated at Posted at 2022-09-21

おすすめ商品の「アップセル」を、勝手に自動で相互登録していくphp。
一方の商品でアップセルを登録すると、登録された商品にもそのおすすめが登録されていく。

例)Aのアップセル(B・C・D)で登録すると、
  Bのアップセル=A・C・D
  Cのアップセル=A・B・D
  Dのアップセル=A・B・C

ただし、どの商品にもこれを適応させると、無限に増えるので
今回は商品カテゴリーを「new-colection」と「set」に限定している。

add_actionの設置場所がわからず、とりあえず商品ページのフッター読み込み時にしている。なので、一度商品ページのプレビューは読み込まないと相互登録されない。

アップセルもできるのでクロスセルも同じくできるはず。

function.php

//アップセル商品を自動で相互登録する(どこで発火させるのかわからなかったのでとりあえずフッター読み込み時に)
add_action( 'wp_footer', 'show_up_sell_in_single_product' );

    function show_up_sell_in_single_product(){

	$terms = get_the_terms( get_the_ID(), 'product_cat' );

	//商品カテゴリー「new-collection」か「set」
	if(( $terms[0]->slug == 'new-colection' || $terms[0]->slug == 'set') ){

		//アップセルの商品取得
		$upsells = get_post_meta( get_the_ID(), '_upsell_ids',true);
		
		if(is_array($upsells)){

			foreach( $upsells as $upsell){
				$upsell_up = get_post_meta( $upsell , '_upsell_ids',true);
	
				//アップセルの商品にすでにアップセルがある場合
				if(is_array($upsell_up)){

					//$upsellのアップセルにそのページの商品を追加
					array_push($upsell_up,get_the_ID());

					//さらにほかのアップセルも追加
					$upsells_merge = array_merge($upsell_up , $upsells);

					//アップセルに同じ商品が出ないように削除する
					$key = array_search($upsell,$upsells_merge);
					unset($upsells_merge[$key]);

					//キーを連番に振り直し
					$upsells_merge = array_values($upsells_merge);
					update_post_meta( $upsell, '_upsell_ids', array_unique($upsells_merge));

					//削除した商品を戻す
					array_push($upsell_up,$upsell);
			
				
				}else{

					//アップセルに同じ商品が出ないように削除する
					$key = array_search($upsell,$upsells);
					unset($upsells[$key]);

					//キーを連番に振り直し
					$upsells = array_values($upsells);
					update_post_meta( $upsell, '_upsell_ids' ,array_unique($upsells));

					//削除した商品を戻す
					array_push($upsells,$upsell);

				}
			}	
		}
	}
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?