覆盖外部/附属产品按钮URL(带有查询字符串参数)

时间:2018-06-26 09:42:39

标签: php wordpress button woocommerce query-string

我正在尝试覆盖所有外部/附属WooCommerce产品的“购买产品”按钮的URL。该按钮需要链接到联系页面,并在“主题”表单字段中预先填写通过查询字符串包含的产品标题(例如,产品查询:产品标题)。

在阅读https://stackoverflow.com/a/43947253/4068853之后,通过将以下内容添加到functions.php中,我已经很接近了:

// Override external button url
function override_external_product_url( $url, $product ){
    if ( 'external' === $product->get_type() ) {
        // custom add to cart url example
        $url = home_url( "/contact/?your-subject=Product enquiry:");
    }
    return $url;
}
add_filter( 'woocommerce_product_add_to_cart_url', 'override_external_product_url', 10, 2 );

剩下的唯一事情就是将产品标题添加到查询字符串的末尾。我知道可以使用<?php the_title_attribute(); ?>来获取产品标题,但是作为PHP新手,我不确定如何将其实现到函数中?

谢谢。

1 个答案:

答案 0 :(得分:0)

最终使用get_the_title代替,因为the_title_attribute导致错误(产品标题文本在按钮标记外复制和呈现)。还添加了url编码,最终代码如下:

// Override external button url
function override_external_product_url( $url, $product ){
    if ( 'external' === $product->get_type() ) {
        // custom add to cart url example
        $url = home_url("/contact/?your-subject=" . urlencode("Product Enquiry: " . get_the_title()));
    }
    return $url;
}
add_filter( 'woocommerce_product_add_to_cart_url', 'override_external_product_url', 10, 2 );