このストア でWooCommerceを実行しています。
デフォルトでは1ページに12の商品を表示するように設定されていますが、クライアントは他の商品に移動するためにページ付けを使用しなくても済むように「すべて表示」ボタンを要求しました。
現在のページで実行してループを再実行しながらクエリを変更して「1ページあたりの投稿数」を増やすことができる機能はありますか。私はWooCommerceテンプレートファイルについて突っ込んだことがありますが、これがどのように行われるかは明らかではありません。
私は、現在のページにphp GET
変数を渡し、変更されたクエリを実行するかどうかを判断するためにそれをテストすることを考えていました。
<a href="<?php
echo get_permalink( $post->ID ) . "?showall=1";
?>">Show all</a>
そして、テンプレートファイルがループする前に、このようなものがあります
<?php if($_GET['showall'] = 1){ //something here to modify the query (wp_query perhaps?? or a woocommerce filter) } ?>
//the loop as normal
私は正しい軌道に乗っていますか?これは、このようにして達成するのが簡単なことです。実装方法に関するガイダンスがあれば幸いです。
編集: OK WooCommerceのテンプレートについてもう少し掘り下げました。 archive-product.php
が上書きしたいファイルのようです。
今、私はすでに以下のように私のテーマのfunctions.phpでフィルタでページごとの商品を指定します:
add_filter( 'loop_shop_per_page', create_function( '$cols', 'return 12;' ), 20 );
そして、この行をarchive-product.php
にコピーしたmy theme folder/woocommerce
ファイルに追加して、デフォルトをオーバーライドしました。
<?php if($_GET['showall']==1){
add_filter( 'loop_shop_per_page', create_function( '$cols', 'return 8;' ), 30 );
} ?>
それから私がshop_page/?showall=1
にアクセスすると、フィルタは実行に失敗します。 functions.phpのフィルタは優先度が低いにもかかわらず支配的に見えるようです。
functions.php
ファイルに条件付きチェックを追加するだけです。
if( isset( $_GET['showall'] ) ){
add_filter( 'loop_shop_per_page', create_function( '$cols', 'return -1;' ) );
} else {
add_filter( 'loop_shop_per_page', create_function( '$cols', 'return 12;' ) );
}
パーティーに遅刻しますが、あなたがphp 5.2を説明する必要がないなら、クロージャーを使うことはより安全でより効率的です:
add_filter( 'loop_shop_per_page', function ( $cols ) {
return - 1;
} );
(create_function
の php manual を参照してください。)
トピックを読んでください。
訪問者が見たい製品の数を選択するためのドロップダウンボックスを作成するために、この周りにプラグインを作成しました。
http://wordpress.org/plugins/woocommerce-products-per-page/ /
あなたがあなたの状況でこれを使用できることを願っています。