Использование первого не является по своей сути более безопасным, чем последнее, вам необходимо дезинформировать ввод, является ли он частью массива параметров или простой переменной. Поэтому я не вижу ничего плохого в использовании последней формы с $table
, если вы убедитесь, что содержание $table
безопасно (alphanum plus underscores?) Перед его использованием.
WooCommerce должно делать это автоматически, но в интересах ответа на ваш вопрос в вашем коде есть некоторые ошибки, похоже, вы пытаетесь смешивать оператор ternery с инструкцией IF.
Правильная замена строки 3 должна выглядеть так:
update_post_meta($post_id, '_price', (isset($product['sale-price']) && !empty($product['sale-price'])) ? $product['sale-price'] : $product['price']);
Мой последний рабочий код выглядит следующим образом:
update_post_meta($post_id, '_regular_price', (isset($product['price']) && !empty($product['price'])) ? $product['price'] : '');
update_post_meta($post_id, '_sale_price', (isset($product['sale-price']) && !empty($product['sale-price']) && ($product['sale-price']<$product['price'])) ? $product['sale-price'] : ((isset($product['retail-price']) && !empty($product['retail-price']) && ($product['retail-price']<$product['price'])) ? $product['retail-price'] : ''));
update_post_meta($post_id, '_price', (isset($product['sale-price']) && !empty($product['sale-price'])) ? $product['sale-price'] : ((isset($product['retail-price']) && !empty($product['retail-price'])) ? $product['retail-price'] : $product['price']));
Благодаря Frits для справки. :) [/ Д2]