質問: ***店舗(投稿)でスタッフ(カスタムフィールド)を管理し、かつカスタムフィールド数でページ遷移をさせる方法は無いでしょうか?*** 現在、wordpressでカスタム投稿で店舗のアーカイブページを作成しております。 一つの投稿の中にカスタムフィールドでスタッフ情報を作っており、投稿内での最大スタッフ数は10人で設定しています。 表示はランダムです。 現状の設定だと、この店舗アーカイブページの一ページあたりの上限が10店舗なため最大スタッフ数としては100名となりますが、店舗内のスタッフ数にバラつきがあるためページによって一ページの記載にバラつきが生まれてしまいます。 一ページ100人で固定して遷移させるためには、店舗のカスタム投稿とスタッフのカスタム投稿で別々で管理して表示させる方法しか無いでしょうか? この場合だと二重で情報が発生し、無駄が生まれるため出来れば上記のように店舗の中でスタッフ数を管理して表示させたいです。 別々に表示させる方法しかない場合、紐付けをどうやればいいかもご教示いただけると幸いです。 お力添えをお願い致します。
回答: とても手順が多く、説明が難しい方法なのですが、思いついたので流れを書きます。 1. カスタム投稿を使わず固定ページを採用する 2. 固定ページにカスタムテンプレートを設定 3. プラグイン Custom Field Suite (CFS) か Advanced Custom Fields (ACF) を導入 4. ループ「店舗」を作成し、その配下にループ「すたっふ」を作成 5. カスタムテンプレートで「店ループ」を取り出す 6. 「すたっふループ」をランダムに取り出す( `$MyConten` に追記していく) 7. 「すたっふ」が100人になったところで `` を挿入 8. 終わったところで `$post->post_content = $MyContent;` を実行 9. `the_content();` と `wp_link_pages();` を実行 ↓↓↓カスタムテンプレートでの処理イメージ↓↓↓ ``` // こういうイメージ(あくまでイメージ) $staffCount = 0; $MyContent = ''; foreach( 店舗ループ ) { $temp_head = ''.てんぽめい.えいぎょうじかん; $temp_body = ''; $temp_foot = ''; すたっふループ = ランダムにする関数を作る( すたっふループ ); foreach( すたっふループ ) { $staffCount++; if ( $staffCount > 100 ) { if ( !empty( $temp_body ) ) { $temp_body .= $temp_foot; } $temp_body .= "\n".''."\n".$temp_head; $staffCount = 0; } if ( empty( $temp_body ) ) { $temp_body .= $temp_head; } $temp_body .= ''.すたっふじょうほう.''; } if ( !empty( $temp_body ) ) { $MyContent .= $temp_foot; } } global $post; $post->post_content = $MyContent; setup_postdata( $post ); remove_filter( 'the_content', 'wpautop' ); // うまくいかなければ消す。 the_content(); wp_link_pages(); ``` わかりにくいですね、すいません。 以下はページ分割部分とカスタムフィールドプラグインの参考URLになります。 (参考1:固定ページでカスタムフィールドを利用したページ分割) 【Advanced Custom Fields: Repeater Fieldでタグを使う方法 | 株式会社レオンテクノロジーはWebサイトを守るセキュリティ会社です】 > > > ``` > global $post; > $post->post_content = $MyContent; > setup_postdata( $post ); > remove_filter( 'the_content', 'wpautop' ); // うまくいかなければ消す。 > the_content(); > wp_link_pages(); > > $MyContent = '.get_the_content().''; > if( have_rows( 'repeater_field_name' ) ): > while ( have_rows( 'repeater_field_name' ) ) : the_row(); > $MyContent .= ''.the_sub_field( 'sub_field_name' ).''; > endwhile; > endif; > ``` > > (参考2:Custom Field Suite プラグイン) 【Custom Field Suite ? WordPress Plugins】 【ワードプレスのプラグインCustom Field Suiteの使い方 | 稼げる副業でお小遣いを稼ぐ方法】 【【WPプラグイン】Custom Field Suite(カスタムフィールドスイート)の使い方と表示方法|ZIGZOW】