Есть ли способ просто показать акции на одном продукте, когда пользователь вошел в систему - PullRequest
1 голос
/ 04 октября 2019

Я пытаюсь просто показать товар на отдельном продукте, когда пользователь вошел в систему. Я пытался манипулировать двумя разными скриптами, которые я нашел, но это не работает. Пожалуйста, помогите!

function show_stock() {
global $product;
if ( $product->get_stock_quantity() ) { // if manage stock is enabled 
if ( number_format($product->get_stock_quantity(),0,'','') < 3 ) { // if stock is low
echo '<div class="remaining">Only ' . number_format($product->get_stock_quantity(),0,'','') . ' left in stock!</div>';
} else {
echo '<div class="remaining">' . number_format($product->get_stock_quantity(),0,'','') . ' left in stock</div>'; 
        }
    }
}

add_action('woocommerce_after_shop_loop_item','show_stock', 10);
add_action( 'init', 'hide_stock_not_logged_in' );

function hide_stock_logged_in() { 
if ( !is_user_logged_in() ) {       

remove_action('woocommerce_after_shop_loop_item','show_stock', 10);

}
}

Ответы [ 2 ]

3 голосов
/ 04 октября 2019

Вы можете,

1- Использовать хук wp_footer, который вызывается при загрузке каждой страницы

2- Проверить, вошел ли пользователь в этот хук

3- Если нетпросто сделайте «display: none» для атрибутов css (class или id) элемента товара.

Пример:

function hide_stock_if_user_not_logged_in()
{
    if ( !is_user_logged_in() )
    {
        echo "<style>p.stock.in-stock { display: none }</style>";
    }
}
add_action( 'wp_footer', 'hide_stock_if_user_not_logged_in' );

Возможно, вам придется изменить часть «style». Проверено и работает отлично. Я надеюсь, что это поможет вам.

2 голосов
/ 04 октября 2019

@ Решение MrEbabi идеально, но в качестве альтернативы вы можете просто использовать css следующим образом:

.logged_in .remaining{
display:none;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...