完美的woocommerce品牌仅允许使用某些标签,并通过该功能删除其余标签
if( isset( $_POST['pwb_brand_description_field'] ) ){
$desc = strip_tags(
wp_unslash( $_POST['pwb_brand_description_field'] ),
'<p><span><a><ul><ol><li><h1><h2><h3><h4><h5><h6><pre><strong><em><blockquote><del><ins><img><code><hr>'
);
global $wpdb;
$wpdb->update( $wpdb->term_taxonomy, [ 'description' => $desc ], [ 'term_id' => $term_id ] );
我正在寻找一种替代方法,以便可以包含所有标签,尤其是<div>
我希望可以将某些内容添加到functions.php中,这将有助于我实现这一目标?
答案 0 :(得分:1)
因为插件作者没有为此特定功能添加任何过滤器/挂钩,所以您必须做一个相当笨拙的解决方法。
非常感谢,通过几个操作调用了此函数
add_action( 'edit_pwb-brand', array( $this, 'add_brands_metafields_save' ) );
add_action( 'create_pwb-brand', array( $this, 'add_brands_metafields_save' ) );
这意味着我们也许可以添加在这两个之后之后运行的自己的动作,而也许可以做您要做的事情想要。
请注意,这不是最佳选择,但无法避免。此功能实际上运行了两次(插件中的原始版本,再加上您的版本),这对性能没有好处-但是,因为只有在管理员保存品牌后才会发生这种情况,所以性能应该不会太差。>
首先,添加您自己的具有较高优先级的操作,然后复制具有所需修改的原始功能。
通常建议您在主题的functions.php文件中执行此操作,但这并不理想-如果要更改主题或更新主题但保留此功能怎么办?相反,我强烈建议,您可以构建自己的小型轻量级插件。此类插件的完整代码如下。 (只需将此代码添加到PHP文件中,然后将其放在您的plugins目录中即可。)
<?php
/**
* Plugin Name: Override Perfect WooCommerce Brands Meta
* Description: Custom override to permit div tags in brand meta description
* Version: 1.0.0
* Author: SupGen
*/
// Note the higher priority levels - to ensure these run AFTER the main plugin is done
add_action( 'edit_pwb-brand', 'override_add_brands_metafields_save', 9999 );
add_action( 'create_pwb-brand', 'override_add_brands_metafields_save', 9999 );
function override_add_brands_metafields_save( $term_id ) {
// NOTE: hard-coding the file name here in order to verify the nonce. MAY need to be changed
$filename = 'class-brands-custom-fields.php';
if ( ! isset( $_POST[ 'pwb_nonce' ] ) || ! wp_verify_nonce( $_POST[ 'pwb_nonce' ], $filename ) ) {
return;
}
// removed bits you didn't care about, keeping only the relevant part
if ( isset( $_POST[ 'pwb_brand_description_field' ] ) ) {
// added div tag to allowed tags list
$desc = strip_tags(
wp_unslash( $_POST[ 'pwb_brand_description_field' ] ),
'<div><p><span><a><ul><ol><li><h1><h2><h3><h4><h5><h6><pre><strong><em><blockquote><del><ins><img><code><hr>'
);
global $wpdb;
$wpdb->update( $wpdb->term_taxonomy, [ 'description' => $desc ], [ 'term_id' => $term_id ] );
}
}