Пользовательские цены, ЕСЛИ идентификатор продукта =

#php #wordpress #hook-woocommerce

#php #wordpress #ссылка-woocommerce

Вопрос:

У меня есть пользовательская таблица, созданная для переопределения цен WooCommerce. Таблица называется wp_get_pricing. В настоящее время приведенный ниже код (наряду с множеством других попыток этого) останавливается на первом операторе IF и устанавливает для всех продуктов одинаковую цену, даже если идентификатор продукта отсутствует в приведенных ниже операторах IF.

 function return_custom_price($product, $price) {
global $savedzip;   

$products_array = wc_get_product( id );

$column_ids='';
if ($products_array = '846') {
$column_ids = 'five_resident';  }
elseif ($products_array = '1477') {
$column_ids = 'six_resident';}
elseif ($products_array = '1603') {
$column_ids = 'thirty_commercial';}
elseif ($products_array = '1602') {
$column_ids = 'twenty_commercial';}
elseif ($products_array = '1600') {
$column_ids = 'fifteen_commercial';}
elseif ($products_array = '1322') {
$column_ids = 'thirty_resident';}
elseif ($products_array = '1316') {
$column_ids = 'twenty_resident';}
elseif ($products_array = '1314') {
$column_ids = 'fifteen_resident';}
elseif ($products_array = '1313') {
$column_ids = 'ten_resident';}
else  {
    $column_ids = "residential";} 

$price = $wpdb->get_var("SELECT $column_ids FROM wp_get_pricing WHERE zip='$savedzip'");
return $price;

 }
  add_filter('woocommerce_get_price', 'return_custom_price', 10, 2); 
  

если я изменю $products_array на = $product-> id(), интерфейс веб-сайта вернет пустую страницу. Любая помощь приветствуется.

ОБНОВЛЕНИЕ Я изменил

  $products_array = wc_get_product( id ) 
  

Для

  $FindID = $wpdb->get_results("SELECT DISTINCT ID FROM wp_posts WHERE post_type = 'product' AND post_status='publish'", ARRAY_A);
  

что дало мне приведенное ниже, когда я сделал var_dump

  array(20) { [0]=> array(1) { ["ID"]=> string(2) "81" } [1]=> array(1) { ["ID"]=> string(3) "577" } [2]=> array(1) { ["ID"]=> string(3) "846" } [3]=> array(1) { ["ID"]=> string(4) "1306" } [4]=> array(1) { ["ID"]=> string(4) "1311" } [5]=> array(1) { ["ID"]=> string(4) "1313" } [6]=> array(1) { ["ID"]=> string(4) "1314" } [7]=> array(1) { ["ID"]=> string(4) "1316" } [8]=> array(1) { ["ID"]=> string(4) "1322" } [9]=> array(1) { ["ID"]=> string(4) "1324" } [10]=> array(1) { ["ID"]=> string(4) "1477" } [11]=> array(1) { ["ID"]=> string(4) "1592" } [12]=> array(1) { ["ID"]=> string(4) "1593" } [13]=> array(1) { ["ID"]=> string(4) "1598" } [14]=> array(1) { ["ID"]=> string(4) "1600" } [15]=> array(1) { ["ID"]=> string(4) "1602" } [16]=> array(1) { ["ID"]=> string(4) "1603" } [17]=> array(1) { ["ID"]=> string(4) "1605" } [18]=> array(1) { ["ID"]=> string(4) "1665" } [19]=> array(1) { ["ID"]=> string(4) "1670" } }
  

Обновление $products_array = до

 $products_array = $findID->ID;
  

ЕСЛИ $products_array = возвращает только первое значение и устанавливает для всех продуктов ту же цену, что и для продукта с идентификатором 846.

ЕСЛИ $products_array == возвращает ОСТАЛЬНОЕ

Ответ №1:

Конечно, это должно произойти, потому что = это оператор присваивания. Если 846 присвоен успешно $products_array , выполняется условный код. Вам лучше использовать == для сравнения.

Комментарии:

1. Если я изменю, если $products_array = ‘ID #’ на $ products_array == ‘ID #’, это вернет 0.00 для каждого продукта.

2. просто var_dump ваш $products_array и давайте посмотрим, что вы получите

3. Обновил мой вопрос, чтобы отразить сделанные мной обновления. По-прежнему безуспешно

4. каков тип данных вашего id

5. АВТО_ИНКРЕМЕНТ bigint(20)