我把这篇文章作为一个答案,因为它渴望得到评论<我不知道这是否适合你的需要,因为它有点复杂,我还链接到一个单独的插件,我成功地使用了它<因此,如果答案不合适,请随意再投票!
您说过您刚刚通过CSS禁用了“添加到购物车”按钮,但这是unsafe, 因为按钮仍然存在,只是不可见。相反,您应该通过可用的WooCommerce hooks, 类似于:(UPDATED)
// remove add to cart button for every product
add_action( \'init\', \'prfx_remove_add_to_cart_button\');
function prfx_remove_add_to_cart_button() {
remove_action( \'woocommerce_after_shop_loop_item\', \'woocommerce_template_loop_add_to_cart\', 10); // catalog page
remove_action( \'woocommerce_single_product_summary\', \'woocommerce_template_single_add_to_cart\', 30); // single product page
}
或者你也可以使用
WooCommerce filter 并禁用这些产品的购买(添加到购物车按钮消失),如:
add_filter(\'woocommerce_is_purchasable\', \'prfx_is_product_purchasbale\');
function prfx_is_product_purchasbale($purchasable, $product) {
// you could check agains a meta option, or maybe if a shortcode exists in this product
if ($product->id == 132) {
$purchasable = false;
}
return $purchasable;
}
无论如何,我使用以下设置实现了一个类似的系统:
我使用了以下插件:
联系人表单7从URL获取并显示参数(available here)“Contact Form 7 Get and Show Parameter from URL”插件上次更新是很久以前的事了,这段旧代码已经存在一些问题。其他人和我自己都创建了此插件的固定版本,例如:https://github.com/LWS-Web/contact-form-7-get-and-show-parameter-from-url
该插件可用于以下用途:
有时使用Contact Form 7 WordPress插件时,您需要将参数从URL传递到隐藏字段或在表单中显示它。这个插件非常适合传递订单号、选定的包甚至安全信息等信息。
The idea is:在产品页面上创建一个链接,其中包含产品标题,例如产品ID。如果单击该链接,则会打开联系人表单,并且产品的标题和ID仍然可以通过URL参数获得。标题和ID可以显示在表单和邮件上。
以下是我所做工作的总结:
1. 创建一个新的联系人表单7表单,并将其插入到带有slug的页面上product-inquiry
.
2. 在单个产品页面上创建如下链接,例如:
<a href="<insert your home-url>/product-inquiry/?product-title=<insert your product-title>&product-id=<insert your product-id>">Product Inquiry</a>
因此,在前端/浏览器中,此链接看起来像/指向:
https://example.com/product-inquiry/?product-title=My Product&product-id=132
(UPDATE)
您应该使用WooCommerce挂钩插入新按钮来代替旧按钮<此外,如果使用变体,它会很快变得复杂
例如,您可以插入类似以下内容的查询按钮:
// add inquiry button into every product
// we use the same hooks as before, to insert the new content on the same spot
add_action( \'woocommerce_after_shop_loop_item\', \'prfx_add_inquiry_button\', 10); // catalog page
add_action( \'woocommerce_single_product_summary\', \'prfx_add_inquiry_button\', 30); // single product page
function prfx_add_inquiry_button() {
$current_product_id = get_the_ID(); // get ID of the current post
$current_product_title = get_the_title(); // get the title of the current post
$product = wc_get_product( $current_product_id ); // get the product object
// create a button for variable/variant products
if ($product->is_type( \'variable\' )) {
$variations = $product->get_available_variations(); // get all available variations of the current product
if ($variations) {
foreach ($variations as $variation) {
if ($variation[\'variation_is_active\'] == 1) {
echo \'<div>\';
// use this to see all available data
// print_r($variation);
$variation_price_html = $variation[\'price_html\']; // variation price html, for example "€150,00 incl. vat"
$variation_id = $variation[\'variation_id\']; // variation ID, for example "2006"
$variation_title = get_the_title( $variation_id ); // variation title, for example "Beanie with Logo - red, medium"
// we create a button for each single available variation
echo \'<a href="\'.home_url(\'/product-inquiry\').\'/?product-title=\'.$variation_title.\'&product-id=\'.$variation_id.\'" class="button">\';
echo $variation_title; // show title
echo \'<br>\';
echo $variation_price_html; // show price html
echo \'</a>\';
echo \'</div><br>\';
}
}
}
// create a button for simple products
} elseif ($product->is_type( \'simple\' )) {
echo \'<a href="\'.home_url(\'/product-inquiry\').\'/?product-title=\'.$current_product_title.\'&product-id=\'.$current_product_id.\'" class="button">\';
echo $current_product_title;
echo \'</a>\';
}
}
如果单击该链接,将打开带有查询表单的页面,您将在url中看到产品标题和ID可作为参数使用。
所以现在你可以用一些shortcodes (来自联系人表单7从URL插件获取和显示参数)以显示和使用这些URL参数。
[getparam product-title]
> 从URL获取“product title”URL参数的值。(前端不可见)
[showparam product-title]
> 显示/使用联系人表单中的值。
[getparam product-id]
... 同上
[showparam product-id]
... 同上
3. 编辑您的查询表单,并在表单上插入一些带有短代码的文本,如:
[getparam product-title][getparam product-id]
<p>Inquiry for product: [showparam product-title] ([showparam product-id]) </p>
这将在前端显示文本,如
Inquiry for product: My Product (132)
.
4. 最后,编辑表单的邮件设置。在这里,您现在可以使用短代码,如[product-title]
和[product-id]
将这些值输入到“发送邮件”中!可用的短代码列在页面顶部。