我正在嘗試在 Woocommerce 網站上的產品串列中顯示動態產品徽章。產品徽章應僅顯示產品是否已分配加售。
我只是在單個產品頁面上使用content-single-product.php檔案中的此代碼執行此操作,結果很好:
<?php if ( isset( $product ) && is_product() ) {
$upsells = version_compare( WC_VERSION, '3.0', '<' ) ? $product->get_upsells() : $product->get_upsell_ids();
if ( count( $upsells ) > 0 ) { ?>
<span class="more_variants">Finns i fler varianter</span>
<?php } } ?>
但是,由于沒有為串列中的單個產品收集追加銷售的產品資料,因此我嘗試了另一種方法,將以下代碼實作為functions.php:
add_action( 'woocommerce_before_shop_loop_item', 'related_upsell_products', 15 );
function related_upsell_products() {
global $product;
if ( isset( $product ) && is_product() ) {
$upsells = version_compare( WC_VERSION, '3.0', '<' ) ? $product->get_upsells() : $product->get_upsell_ids();
if ( count( $upsells ) > 0 ) {
echo '<span >Finns i fler varianter</span>';
}
}
}
中的代碼functions.php既沒有給我錯誤,也沒有給我我想要的結果。它什么都不回傳。我誠實的想法是,global $product;如果該產品是否有指定的追加銷售產品,這將為我提供獲取資訊所需的額外產品資料。
任何想法都非常受歡迎!我已經搜索了論壇,并沒有得到太多關于以這種方式與 Woocommerce 進行加售的結果。可能是因為將加售作為變體而不是可變產品進行銷售并不常見。
uj5u.com熱心網友回復:
shop當您說“串列中的產品”時,我將假設您在頁面上。如果是這樣,那么您需要:
- 將您的條件檢查更改為
is_shop(). global $product檢查商店頁面后,也可以致電您。
所以你的整個代碼將是這樣的:
add_action('woocommerce_before_shop_loop_item', 'related_upsell_products', 15);
function related_upsell_products()
{
if (is_shop()) {
global $product;
$upsells = version_compare(WC_VERSION, '3.0', '<') ? $product->get_upsells() : $product->get_upsell_ids();
if (count($upsells) > 0) {
echo '<span >Finns i fler varianter</span>';
}
}
}
結果如下:

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/364395.html
標籤:php WordPress的 求购 产品 woocommerce-主题
