質問: 現在、WooCommerce Bookingsを使ってサロンの予約サイトを構築しています。 ところが最後の予約ボタンとなる箇所に「お支払いへすすむ」とボタン表示され、 意味が異なる仕様になっています。 ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/8ce67ddc8ca33d2ca915a43ae1651af5.png) 予約の時は、この「お支払へすすむ」ボタンの表記を、 「予約を申し込む」としたい(商品購入の時はそのままで良い)です。 つきましては予約の時、商品購入の時のボタン文言を変更する仕様にするには どのようにして記述をおこなったらよいのでしょうか? 一応参考となるサイトをググッている(下記)のですが、上記に該当する記述がなく、いきづまっております。 [調査したこと] http://stackoverflow.com/questions/36779987/changing-the-add-to-cart-button-text-in-woocommerce-for-items-with-variations もし、ご存じの方がいらっしゃいましたらご教示頂けますとありがたいです。
回答: 提示されているリンクの1と2が、「お支払いへ進む」ボタンの出力処理自体を変更するカスタマイズ方法のようです。ただ、リンク3ではフィルターを使って「カート」ボタンのテキストだけをサクッと変更しているので、「お支払いへ進む」ボタンにも同じようなフィルターが用意されている事を期待してしまいます。リファレンスを検索します。 Hook Reference | WooCommerce 2.6.x Code Reference 裏切られます。仕方が無いのでリンク1に従います。 `woocommerce_button_proceed_to_checkout`という関数が「お支払いへ進む」ボタンを出力するためのもので、ユーザーが同名の関数を定義していた場合はそちらを、なければデフォルトの関数が定義され使用されるようです。 デフォルトの`woocommerce_button_proceed_to_checkout`関数の内容は、`wc_get_template( 'cart/proceed-to-checkout-button.php' );`の1行。目的はボタンテキストの変更だけなので、この`wc_get_template`の結果を置換して出力すればよさそうですね。`wc_get_template`はテンプレートを直接出力する関数で返り値がないので、バッファリングで変数に取り込みます。まとめると次のようなコードになると思います。 ``` if ( 予約ページか判定() ) { function woocommerce_button_proceed_to_checkout() { ob_start(); // バッファリング wc_get_template( 'cart/proceed-to-checkout-button.php' ); $template = ob_get_clean(); echo str_replace('お支払いへ進む', '予約を申し込む', $template); } } ``` 何か見落としがあるかもしれませんが、適宜修正をお願いします。基本的には独自のwoocommerce_button_proceed_to_checkout関数を用意してなんとかする、という方向になると思います。wc_get_templateにもフックが用意されているようですが、そちらを利用する場合新しくテンプレートを作らないといけないので修正箇所は2箇所に増えます。 ### 参考 woocommerceリポジトリのwoocommerce_button_proceed_to_checkout検索結果 上:`woocommerce_proceed_to_checkout`アクションのタイミングで`woocommerce_button_proceed_to_checkout`が実行される 下:デフォルトの`woocommerce_button_proceed_to_checkout`関数 Translations < Japanese < Development (trunk) < GlotPress - WordPress