Статус переопределения-вариант продукта private woocommerce

#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;
}