gpt4 book ai didi

php - WooCommerce 产品比较插件的更改按钮

转载 作者:行者123 更新时间:2023-12-04 16:03:10 24 4
gpt4 key购买 nike

我想更改插件 WooCommerce Products Compare 中比较按钮的外观。目前,它显示一个带有标签的复选框和一个打开比较页面的链接。

我检查了文档 ( https://docs.woocommerce.com/document/woocommerce-products-compare/ ) 并找到了一个钩子(Hook)来更改按钮。遗憾的是,没有太多附加信息。

它说,您可以使用以下钩子(Hook)更改比较按钮的显示:

apply_filters( 'woocommerce_products_compare_compare_button', html )

据我了解,html 是我需要添加自定义代码的地方,对吧?

我试过这样的:

$compare_btn = 'my button html';
apply_filters( 'woocommerce_products_compare_compare_button', $compare_btn );

但是按钮没有改变。有什么我想念的吗?

我应该如何添加 HTML 的动态部分(如产品 ID)。当前输出如下所示:

<p class="woocommerce-products-compare-compare-button">
<label for="woocommerce-products-compare-checkbox-1876"><input type="checkbox" class="woocommerce-products-compare-checkbox" data-product-id="1876" checked="checked" id="woocommerce-products-compare-checkbox-1876">&nbsp;Compare</label>
<a href="https://example.com/products-compare" title="Compare Page" class="woocommerce-products-compare-compare-link"><span class="dashicons dashicons-external"></span></a>
</p>

编辑:我在插件文件中找到了这个函数。就是这样:

public function display_compare_button() {
global $post;

$name = __( 'Compare', 'woocommerce-products-compare' );

$checked = checked( $this->is_listed( $post->ID ), true, false );

$html = '<p class="woocommerce-products-compare-compare-button"><label for="woocommerce-products-compare-checkbox-' . esc_attr( $post->ID ) . '"><input type="checkbox" class="woocommerce-products-compare-checkbox" data-product-id="' . esc_attr( $post->ID ) . '" ' . $checked . ' id="woocommerce-products-compare-checkbox-' . esc_attr( $post->ID ) . '" />&nbsp;' . $name . '</label> <a href="' . get_home_url() . '/' . $this->get_endpoint() . '" title="' . esc_attr__( 'Compare Page', 'woocommerce-products-compare' ) . '" class="woocommerce-products-compare-compare-link"><span class="dashicons dashicons-external"></span></a></p>';

echo apply_filters( 'woocommerce_products_compare_compare_button', $html, $post->ID, $checked );

return true;
}

有什么方法可以覆盖函数吗?

最佳答案

尝试以下操作(您必须在其中更改按钮):

add_filter( 'woocommerce_products_compare_compare_button', 'custom_products_compare_compare_button', 20, 3 );
function custom_products_compare_compare_button( $html, $post_id, $checked ){
global $post;

$name = __( 'Compare', 'woocommerce-products-compare' );

// HERE below, make your changes to the HTML ($this need to be replaced by an instance of the class object)
$html = '<p class="woocommerce-products-compare-compare-button"><label for="woocommerce-products-compare-checkbox-' . esc_attr( $post->ID ) . '"><input type="checkbox" class="woocommerce-products-compare-checkbox" data-product-id="' . esc_attr( $post->ID ) . '" ' . $checked . ' id="woocommerce-products-compare-checkbox-' . esc_attr( $post->ID ) . '" />&nbsp;' . $name . '</label> <a href="' . get_home_url() . '/' . $this->get_endpoint() . '" title="' . esc_attr__( 'Compare Page', 'woocommerce-products-compare' ) . '" class="woocommerce-products-compare-compare-link"><span class="dashicons dashicons-external"></span></a></p>';

return $html;
}

代码进入您的事件子主题(或事件主题)的 function.php 文件。

关于php - WooCommerce 产品比较插件的更改按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49967745/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com