#php #woocommerce
Вопрос:
Возможно, странный вопрос, но есть ли способ программно переопределить status-private
вариацию продукта WooCommerce?
Предыстория: когда вы снимаете флажок «Включено» для варианта продукта, он получает класс status-private
, что означает, что он виден только для зарегистрированных внутренних пользователей и скрыт для внешнего интерфейса.
Я хотел бы, чтобы опция «Включено» оставалась непроверенной, но мне не нужен статус «закрыто». Причиной этого являются некоторые редкие статусы акций, и это должно быть видно во внешнем интерфейсе. Я не могу найти для этого существующий крючок.
function save_variations( $post_id, $post ) {
if ( isset( $_POST['variable_post_id'] ) ) {
for ( $i = 0; $i <= $max_loop; $i ) {
$errors = $variation->set_props(
array(
'status' => isset( $_POST['variable_enabled'][ $i ] ) ? 'publish' : 'private',
));}}}
Комментарии:
1. Извините, но по умолчанию класс
status-private
присваивается только на основе статуса поста. При включении/выключении вариации для этого определенного класса это не имеет значения.
Ответ №1:
Должен помочь следующий фильтр: «woocommerce_post_class»
Если вы хотите удалить этот класс, просто сделайте что-нибудь в соответствии с этим:
add_filter( 'woocommerce_post_class', 'bbloomer_remove_post_class', 9999, 2 );
function bbloomer_remove_post_class( $classes, $product ) {
unset( $classes[ 'status-' . $product->get_status() ] );
return $classes;
}