我应该转义函数.php中添加的文字URL吗

时间:2022-01-29 作者:JEmmerich

我在函数中添加了一个片段。php文件,用于在woocommerce结账页面中添加信用卡图标。图标在我的媒体库中,所以我添加了图像的url。这不是一个输入,不会被更改,我应该退出它吗?

代码:

add_action (\'woocommerce_review_order_before_submit\', \'my_custom_woocommerce_icons\');

function my_custom_woocommerce_icons() {

    $icons  = \'<div class="checkout-icons-container">
        
    <img src="https://mywebsite.com/wp-content/uploads/2022/01/visa02.png" alt="visa" />
<img src="https://mywebsite.com/wp-content/uploads/2022/01/mastercard.png" alt="mastercard"/>
    </div>\';

     echo $icons;
}

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

不,您不必转义其他人无法更改的值。

您应该转义可能被其他源更改的输出,例如,如果有一个过滤器在值上运行。

假设您正在使用wp_upload_dir() 要查找上载目录,您绝对应该这样做,因为该目录的位置可以自定义然后有各种过滤器在起作用,所以您应该转义最终的URL。

或者,如果您插入了自己的过滤器选项,那么您可以更改每个插件或子主题的URL–同样,您需要转义。

示例:

$upload_dir = wp_upload_dir();
$upload_url = $upload_dir[\'baseurl\'];
$payment_icons = [
    \'visa\'       => $upload_url . \'/2022/01/visa02.png\',
    \'mastercard\' => $upload_url . \'/2022/01/mastercard.png\',
];
$payment_icons = apply_filters( \'theme_payment_icons\', $payment_icons );

foreach( $payment_icons as $alt => $url ) {
    printf(
        \'<img src="%1$s" alt="%2$s">\',
        esc_url( $url ), // we escape as late as possible!
        esc_attr( $alt )    
    );
}

相关推荐

Escaping SVG with KSES

我试图在模板中输出SVG文件,PHPCS告诉我需要转义输出。所以我尝试使用KSES,但它似乎不想包含viewbox属性。 $allowed_html = array( \'svg\' => array( \'xmlns\' => array (), \'viewBox\' => true ), \'path\' => array( \'d\'=> array(), ), )