WooCommerceのカートボタンに標準的な見苦しい矢印をいくつか削除したいと思います。これを達成するために、私は次のコードを追加することのヒントを見つけました、それはドキュメントがロードされたときに矢印を削除するべきです。
私は自分のfunctions.phpにそれを入れるつもりだと思いますか?どのように正確にそれをしますか?
$(document).ready(function() {
$(".woocommerce-cart").html(function(i, val) {
return val.replace(" →", "");
});
$(".woocommerce-cart").html(function(i, val) {
return val.replace("← ", "");
});
});
_編集_
はい。私はこのアプローチを試してみました:
'removeArrows.js'という名前のファイルを作り、それを私のプラグインフォルダーに置きました。これは、jQueryの代わりに$を除いて、元のコードと同じ内容です。それから私はfunctions.phpに以下を追加しました:
function wpb_adding_scripts() {
wp_register_script('my_amazing_script', plugins_url('removeArrows.js', FILE), array('jquery'),'1.1', true);
wp_enqueue_script('my_amazing_script');
}
add_action( 'wp_enqueue_scripts', 'wpb_adding_scripts' );
コードを正しく表示する方法がわかりません。これはうまくいきませんでした。これを機能させるための提案はありますか?
wp_register_script()
関数の$scr
が間違っています。 functions.phpがプラグインの中にあり、removeArrows.jsがプラグインのルートにあることを考えると、あなたの$scr
はこのようになるはずです。
plugins_url( '/removeArrows.js' , __FILE__ )
もう1つ注意すべきことは、スクリプトとスタイルを最後にロードすることは常に良い習慣です。これにより、他のスクリプトやスタイルによって上書きされないようになります。これを行うには、 $priority
の優先順位パラメーター(add_action
)に非常に低い優先順位(非常に高い数値)を追加するだけです。
add_action( 'wp_enqueue_scripts', 'wpb_adding_scripts', 999 );
そして always load /は wp_enqueue_scripts
actionフックを通してスクリプトとスタイルをエンキューします。これが適切なフックだからです。 しない wp_head
またはwp_footer
に直接スクリプトおよびスタイルをロードしない
_編集_
テーマについては、すべてを自分のテーマに移動したことを示したように、$scr
はこれに変わります。
get_template_directory_uri() . '/removeArrows.js'
親テーマとこれ
get_stylesheet_directory_uri() . '/removeArrows.js'
子供のテーマのために。完成したコードはこのようになります。
function wpb_adding_scripts() {
wp_register_script('my_amazing_script', get_template_directory_uri() . '/removeArrows.js', array('jquery'),'1.1', true);
wp_enqueue_script('my_amazing_script');
}
add_action( 'wp_enqueue_scripts', 'wpb_adding_scripts', 999 );
私は別の外部のjsファイルを追加することはしません。それは取得するための余分で不必要なリソースであり、それはページの読み込み時間の点で削減したいものです。
私はwp_head
フックを使ってあなたのウェブサイトの頭にこのjQueryスニペットを追加するでしょう。あなたはあなたのテーマまたはプラグイン関数ファイルに以下を貼り付けます。また、以下に示すように、jQueryが競合しないモードになっていることも確認しました。
add_action('wp_head','woocommerce_js');
function woocommerce_js()
{ // break out of php ?>
jQuery(document).ready(function($) {
$(".woocommerce-cart").html(function(i, val) {
return val.replace(" →", "");
});
$(".woocommerce-cart").html(function(i, val) {
return val.replace("← ", "");
});
});
<?php } // break back into php
これを実行してページを更新したら、ページソースをチェックして、このjQueryスニペットが実際にページにロードされていることを確認してください。もしそうなら、それはあなたが使っている実際のjQueryスニペットでそれらが何か違っていない限りうまくいくはずです。
その答えはすでに受け入れられているので、私はJavaScriptコードをフッターに入れるための別の方法があることを言いたいと思います。
functions.phpファイル内:
function load_script_to_remove_arrow(){
?>
<script>
$(document).ready(function() {
$(".woocommerce-cart").html(function(i, val) {
return val.replace(" →", "");
});
$(".woocommerce-cart").html(function(i, val) {
return val.replace("← ", "");
});
});
</script>
<?php
}
add_action( 'wp_footer', 'load_script_to_remove_arrow' );
このスクリプトを特定のページテンプレートにロードするには、conditionを使用する必要があります。
if( is_page_template( 'page-template.php' ) ):
//put above code (or just add_action part) inside this condition to load file only if the condition is true
endif;
page-template.phpがディレクトリにある場合(あなたのテーマのルートディレクトリにあるtemplatesディレクトリを言う)、次のように書くことができます。
is_page_template( 'templates/page-template.php' );