在Woocommerce

时间:2018-03-18 12:40:47

标签: php sql wordpress woocommerce product

在Woocommerce单一产品页面中,我试图排除任何以“我”字符开头的产品出现在相关产品中。我在single-product/related.php模板文件中尝试了以下内容:

foreach($products as $product){
    if (substr($product->post_title, 0, 1) === 'I') {
          unset($product);
    }
}

但我仍然遗漏了一些东西,因为它不起作用。

如何从相关产品中排除标题以"I"字母开头的产品ID?

1 个答案:

答案 0 :(得分:0)

以下是一个小型自定义附加功能,该功能将从单个产品页面中的相关产品中排除产品ID,哪个标题以字母 "I" 开头。

我使用非常轻松的SQL查询来排除那些产品ID。

代码:

add_filter( 'woocommerce_related_products', 'exclude_ids_from_related_products', 10, 3 );
function exclude_ids_from_related_products( $related_posts, $product_id, $query_args ){
    global $wpdb;

    $starting_by = "I"; // Excluding product title starting with…

    // Get all product IDs starting with "I" in an array to be excluded
    $excluded_ids = $wpdb->get_col( "
        SELECT ID FROM {$wpdb->prefix}posts WHERE post_type LIKE 'product'
        AND post_status LIKE 'publish' AND post_title LIKE '$starting_by%'
    " );

    // Return an array of related product IDs without excluded product IDs
    return array_diff ( $related_posts, $excluded_ids );
}

代码进入活动子主题(或活动主题)的function.php文件。经过测试并正常工作。