返回

WooCommerce PHP 中插入短代码:正确方法与实践

php

在 WooCommerce PHP 文件中插入短代码

在 WooCommerce 开发中,有时需要在 PHP 文件中嵌入短代码以实现特定功能。一种常见需求是在产品循环中添加心愿单按钮,这个按钮通常由插件提供短代码形式。本文将探讨如何在 WooCommerce PHP 文件中正确插入短代码,解决常见的错误并给出有效的实践方法。

直接使用 do_shortcode()

最直观的方法是使用 WordPress 的 do_shortcode() 函数。 此函数负责解析短代码并返回其对应的输出。 关键在于理解它的使用场景和输出处理。 考虑下列函数片段:

// 错误示例:直接回显 do_shortcode()
$adc = '<div class="card_bot">
<div class="vamtam-add-to-cart-wrap shrt">'
    . echo do_shortcode("[wlfmc_add_to_wishlist]") 
    . $content .    
'</div></div>';
return apply_filters( 'vamtam_woocommerce_loop_add_to_cart_link', $adc );

上述示例的错误在于它直接将 echo do_shortcode() 的返回值作为字符串拼接的一部分。 echo do_shortcode() 将输出打印到页面,并且返回值通常为空。要获得短代码的输出内容,应该赋值给变量,然后再进行拼接操作:

正确方法:

// 使用变量存储短代码输出
$wishlist_shortcode = do_shortcode("[wlfmc_add_to_wishlist]");
$adc = '<div class="card_bot">
<div class="vamtam-add-to-cart-wrap shrt">'
    . $wishlist_shortcode . 
    $content .    
'</div></div>';

return apply_filters( 'vamtam_woocommerce_loop_add_to_cart_link', $adc );

操作步骤:

  1. 找到要插入短代码的 WooCommerce PHP 文件。
  2. 使用do_shortcode()函数解析你的心愿单短代码,并将其返回值赋给一个变量 (例如: $wishlist_shortcode)。
  3. 将变量拼接字符串内。
  4. 保存更改并刷新页面,查看心愿单按钮是否出现。

printf() 函数配合 do_shortcode()

另一种方法是使用 printf() 函数进行格式化输出。它能使代码更加整洁、易读。 该方法在多变量拼接时尤为有用。

$wishlist_shortcode = do_shortcode("[wlfmc_add_to_wishlist]");
$adc = sprintf(
    '<div class="card_bot">
        <div class="vamtam-add-to-cart-wrap shrt">
            %s%s
        </div>
    </div>',
    $wishlist_shortcode,
    $content
);
return apply_filters( 'vamtam_woocommerce_loop_add_to_cart_link', $adc );

操作步骤:

  1. 确定短代码的插入位置。
  2. sprintf() 函数的格式化字符串设置好,其中 %s 表示要替换的变量占位符。
  3. $wishlist_shortcode$content 作为参数传入 sprintf() 函数。
  4. 保存文件,然后检查网站,查看效果。

安全考量

无论哪种方法,都需要注意输入数据和短代码内容的安全性。在直接输出之前,对变量做安全检查是必要的。对于用户提交的或存储在数据库里的内容尤其应该注意。为了更好的防止XSS攻击, 可以考虑对变量内容做转义:

$wishlist_shortcode = do_shortcode("[wlfmc_add_to_wishlist]");
$safe_wishlist_shortcode =  wp_kses_post($wishlist_shortcode);
$safe_content =  wp_kses_post($content);

$adc = '<div class="card_bot">
        <div class="vamtam-add-to-cart-wrap shrt">'
        .$safe_wishlist_shortcode
        .$safe_content .
'</div></div>';

return apply_filters( 'vamtam_woocommerce_loop_add_to_cart_link', $adc );

其中wp_kses_post() 函数是一个可以保护内容,避免XSS攻击的安全函数。

避免直接回显,善用变量赋值

避免在字符串拼接时直接回显函数,这是一个重要的代码习惯。总是使用变量赋值来接收函数的返回值,有助于代码的组织、调试和维护。do_shortcode() 本身不是设计为打印到页面,它负责返回结果。务必获取其返回的内容。 理解echo, return以及printf的区别。

以上讨论了在 WooCommerce PHP 文件中嵌入短代码的不同方法。选择合适的方式可以让你有效地控制短代码的输出。希望这些分析和建议能够帮助开发者更好地应对短代码相关的问题。记住,在实践中不断探索,才能达到最好的效果。