web-dev-qa-db-ja.com

WooCommerce設定のHTML

WooCommerceの各製品の説明(各製品に同じテキスト)にデフォルトのテキストブロックを追加する必要があります。だから私は新しい設定フィールドをリッチテキストエディタ(wp_editor)として "WooCommerce>設定>カタログ"タブに追加する簡単なプラグインを作成しました。

すべてうまく機能し、プレーンテキストを入力/保存できますが、HTMLタグは削除されます。 settings-save.phpのタグはwoocommerce_cleanで取り除かれていると思います

if ( isset( $value['id'] ) && isset( $_POST[$value['id']] ) ) {
 update_option($value['id'], woocommerce_clean($_POST[$value['id']]));
} elseif( isset( $value['id'] ) ) {
 delete_option($value['id']);
}

コアコードを変更せずにどうすればこれを修正できますか?

1
Tomas

Woocommerce_clean関数:return trim( strip_tags( stripslashes( $var ) ) );は、ほとんどすべてのHTMLを明記します。 WordPressのサニタイズおよびエスケープ機能の中核を使用することは可能かもしれませんが、WooCommerceがどのように反応するかを保証するものではありません。

他のオプションについてはWordPress Codexの データ検証 ドキュメントをご覧ください。

定型文はすべての商品で同じなので、最も簡単な解決策は、デフォルトのWooCommerceテンプレートをテーマのディレクトリにコピーし、必要に応じてファイルを編集することです。これのためのユーザインタフェースを書くのはやり過ぎのようです。

これを製品の「短い説明」で表示したい場合は、ファイルは../wp-content/plugins/woocommerce/templates/single-product/short-description.phpになります。そのファイルをあなたのテーマのディレクトリにコピーしてください../wp-content/themes/***your theme directory***/woocommerce/single-product/short-description.php

コピーしたら、WooCommerceを更新したときに変更内容が上書きされることを心配せずにファイルを編集できます。

テンプレートのカスタマイズに関するドキュメントは WooCommerceドキュメント にあります。

注:これを[説明]タブで使用する場合は、ファイル../wp-content/plugins/woocommerce/templates/single-product/tabs/description.phpを使用できます。

2
Steve