如果没有可用的价格,WooCommerce查询

时间:2015-05-14 06:16:40

标签: wordpress-plugin woocommerce wordpress

我正在帮助一位好朋友建立一个WooCommerce商店。由于商店将变得更大,产品变化多端且可定制,我们无法从一开始就提供/配置所有奖品。

但是,如果没有价格,我们希望所有产品都在商店中并广告查询。

由于我从未编写过WooCommerce,我想知道这是实现这种功能的正确方法吗?

3 个答案:

答案 0 :(得分:3)

有完全相同的问题,无法在任何地方找到插件或解决方案,所以我自己想出了一个解决方法:

您需要编辑文件 的 /wp-content/themes/your-theme-name/woocommerce/single-product/add-to-cart/simple.php (如果它不是那里只是从woocommerce插件复制它 /wp-content/plugins/woocommerce/templates/single-product/add-to-cart/simple.php

并在第14行说出

    if ( ! $product->is_purchasable() ) return;

您需要对其进行评论并编写类似

的内容
    if ( ! $product->is_purchasable() ) {
    // put your code here 
    return; 
    }   

并在//中将代码放在行中,您可以输入例如表单的短代码或更复杂的解决方案,即为按钮设置代码,单击该按钮将打开弹出窗体。

仍在努力;)

答案 1 :(得分:1)

可能为时已晚,但我目前遇到同样的问题。

这里有代码,Woocommerce用来检查是否可以购买产品: https://github.com/woocommerce/woocommerce/blob/master/includes/abstracts/abstract-wc-product.php#L1404

注意:&& '' !== $this->get_price()

/**
 * Returns false if the product cannot be bought.
 *
 * @return bool
 */
public function is_purchasable() {
    return apply_filters( 'woocommerce_is_purchasable', $this->exists() && ( 'publish' === $this->get_status() || current_user_can( 'edit_post', $this->get_id() ) ) && '' !== $this->get_price(), $this );
}

所以你需要编写一个这样的过滤器来覆盖默认值:

add_filter( 'woocommerce_is_purchasable', function ( $is_purchasable, $product ) {
    return $product->exists() && ( 'publish' === $product->get_status() || current_user_can( 'edit_post', $product->get_id() ) );
}, 10, 2 );

答案 2 :(得分:0)

尝试以下代码段。您只需要将其放在您的functions.php中即可。您不需要插件或在子主题中覆盖WooCommerce文件。

// Inquiry link if no price available
function add_inquiry_link_instead_price( $price, $product ) {
    if ( '' === $product->get_price() || 0 == $product->get_price() ) :
        return '<a href="/kontakt/" class="single_add_to_cart_button button alt">Jetzt anfragen</a>';
    endif;
}
add_filter( 'woocommerce_get_price_html', 'add_inquiry_link_instead_price', 100, 2 );