web-dev-qa-db-ja.com

Woocommerce - カートテーブルの列を隠す

私はwoocommerceのカートからコラムを隠したり削除したりしたいのですが、wocommerce用のプラグインを作っていますのでcart.phpやfunctions.phpを直接修正するのは良くないですが更新コードは消えてしまいます、今私はただ価格のためにアイテムを隠すことができますが、列全体を隠すことはできません。

add_filter( 'woocommerce_cart_item_price', '__return_empty_string' ); 

これに加えて、私はCSS display:noneでそれをすることができました、しかし、彼らがコードを調べるならば、人々はアイテムを見るでしょう、現在カートはこのようです

enter image description here 

フックを使ってカートから価格列全体を隠す方法を知っていますか、ありがとう。

私の答え :

Ben HartLennの助けを借りて、私は私のプラグインのcart.phpと私が置き換える必要がある他のファイルのためにcart.phpを置き換えるために私のプラグインにこのコードを追加します

define( 'PLUGIN_DIR', plugin_dir_path( __FILE__ ) );

add_filter( 'woocommerce_locate_template', 'plugin_locate_template', 10, 3 );

function plugin_locate_template( $template, $template_name, $template_path ) {

  global $woocommerce;
  $_template = $template;

  if ( ! $template_path ) $template_path = $woocommerce->template_url;

  $plugin_path  = PLUGIN_DIR . '/woocommerce/';

  $template = locate_template(
    array(
      $template_path . $template_name,
      $template_name
    )
  );

  // Get the template from this plugin, if it exists
  if ( ! $template && file_exists( $plugin_path . $template_name ) )
    $template = $plugin_path . $template_name;

  // Use default template
  if ( ! $template )
    $template = $_template;

  // Return what we found
  return $template;

}

今度はこの場合、フォルダcartとその中にcart.phpファイルを作成し、Price列とTotal列を削除して、置き換えが必要なすべてのファイルで動作します。

あなたはそのファイルを作成します

/plugins/yourplugin/woocommerce/cart/cart.php

そしてコードはあなたのファイルのデフォルトのwoocommerce cart.phpを自動的に置き換えます、woocommerce/templates /の中にあるどんなファイルでも動作します、そのようにあなたはあなた自身のカスタマイズされたwoocommerceテンプレートファイルを持つでしょう。

この解決法がうまくいかず、このコードがあなた自身のカスタマイズされたファイルをロードしていないのなら、テンプレート(例えばavadaのような)がすでにcart.phpか他のファイルを置き換えているのかもしれません。

/ themes/your_theme/woocommerce

テンプレートがあなたのプラグインで置き換えようとしているのと同じファイルを置き換えていないことを確認するために。

Benさん、ありがとうございます。

3

Cart.phpを見た後、製品価格の内容をラップする静的なHTMLがあるため、フックでそれを実行できるようには見えません。その製品価格の内容は、あなたが試したwoocommerce_cart_item_priceフックによって影響を受けるものですが、カラム構造自体のための包含静的htmlマークアップではありません。

良いニュースは、cart.phpテンプレートファイルをテーマに追加してから、バージョンのテンプレートファイルのPrice列の静的HTML出力を削除することで上書きできることです。この方法で変更を失うことを心配する必要はありませんが、Automatticが将来Woocommerceプラグインのcart.phpテンプレートファイルに加えた変更を監視してマージする必要があります。

テンプレートを上書きするには、/wp-content/plugins/woocommerce/templates/cart/cart.phpからWoocommerceプラグインファイルをコピーし、それをあなたのテーマに移動して、Woocommerceがあなたのバージョンを上書きとして認識するようにします。この場合、あなたのテーマの中に/wp-content/themes/your-theme/woocommerce/cart/cart.phpディレクトリを作成した後、あなたはcart.phpファイルをwoocommerce/cart/に入れるでしょう。その後、Woocommerceは、pluginバージョンのcart.phpの代わりに、あなたのテーマからあなたのバージョンのファイルをロードするはずです。

最後に、96行目から100行目(cart.phpの最新バージョン)の行を削除またはコメントアウトするだけで、出力からPrice列全体が削除されます。私に言うことはできませんが、これを行った後に他の視覚的なものを修正する必要があるかもしれません。

念のため、Woocommerceテンプレートファイルを上書きする方法についてもう少し詳しく説明します。 https://docs.woocommerce.com/document/template-structure/

1
Ben HartLenn