Movatterモバイル変換
[0]
ホーム
URL:
画像なし
夜間モード
Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Hishikawa Takuro
PDF, PPTX
67,152 views
これからのpre_get_postsの話をしよう
第24回WordBench神戸で話した資料です。
Technology
◦
Read more
38
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 99
2
/ 99
3
/ 99
4
/ 99
5
/ 99
6
/ 99
7
/ 99
8
/ 99
9
/ 99
10
/ 99
11
/ 99
12
/ 99
13
/ 99
14
/ 99
15
/ 99
16
/ 99
17
/ 99
18
/ 99
19
/ 99
20
/ 99
21
/ 99
22
/ 99
23
/ 99
24
/ 99
25
/ 99
26
/ 99
27
/ 99
28
/ 99
29
/ 99
30
/ 99
31
/ 99
32
/ 99
33
/ 99
34
/ 99
35
/ 99
36
/ 99
37
/ 99
38
/ 99
39
/ 99
40
/ 99
41
/ 99
42
/ 99
43
/ 99
44
/ 99
45
/ 99
46
/ 99
47
/ 99
48
/ 99
49
/ 99
50
/ 99
51
/ 99
52
/ 99
53
/ 99
54
/ 99
55
/ 99
56
/ 99
57
/ 99
58
/ 99
59
/ 99
60
/ 99
61
/ 99
62
/ 99
63
/ 99
64
/ 99
65
/ 99
66
/ 99
67
/ 99
68
/ 99
69
/ 99
70
/ 99
71
/ 99
72
/ 99
73
/ 99
74
/ 99
75
/ 99
76
/ 99
77
/ 99
78
/ 99
79
/ 99
80
/ 99
81
/ 99
82
/ 99
83
/ 99
84
/ 99
85
/ 99
86
/ 99
87
/ 99
88
/ 99
89
/ 99
90
/ 99
91
/ 99
92
/ 99
93
/ 99
94
/ 99
95
/ 99
96
/ 99
97
/ 99
98
/ 99
99
/ 99
Recommended
PPTX
Android+init+process
by
Hong Jae Kwon
PDF
BackBox Linux: Simulazione di un Penetration Test
by
Andrea Draghetti
PDF
You Don't Know Query (WordCamp Netherlands 2012)
by
andrewnacin
PDF
WordPressで投稿記事情報の取得方法
by
regret raym
PDF
クライアントに感謝されるCMS導入のコツ
by
Hishikawa Takuro
PDF
CMS導入で企業のWebサイト運営はこう変わる!
by
Hishikawa Takuro
PDF
あなたがWordCamp Kansai 2014に行くべき5つの理由
by
Kojiro Fukazawa
PDF
WordPressがつくりだすCSSを利用する 初級編
by
Kojiro Fukazawa
PDF
a-blog cms 2.0 を活用した新しいWeb制作のワークフロー
by
Kazumich YAMAMOTO
PDF
ユーザーにやさしい管理画面をつくるために。テーマ制作者ができること 初級編【WordCamp Kansai 2014】
by
Kojiro Fukazawa
PDF
町のウェブ屋があえて 「CMSの機能をダイエットする」 ことから提案する理由
by
Kojiro Fukazawa
PDF
concrete5で実践するリードナーチャリング
by
株式会社ND&I しかたこうき
PDF
プロトタイプ時代の WordPressテーマの作り方・考え方
by
kenji goto
PDF
WordCamp Kansai 2015 - WordPress.org フォーラム参加のススメ
by
Kojiro Fukazawa
PDF
Concrete5で運用をデザイン
by
Atushi Sugiyama
PDF
これからのCMSマーケットトレンドとPHP (for fukuoka.php)
by
株式会社ミツエーリンクス
PDF
フリーランスの事務机&お財布事情
by
Kojiro Fukazawa
KEY
エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜
by
Yuji Nojima
PDF
ノンプログラマーのためのカンタンWordPressテーマ作成入門 〜子テーマでテーマ作成&カスタマイズ〜
by
Mignon Style
PDF
クライアントと同じ方向を向くという事
by
kenji goto
PPTX
HTML5/JavaScriptで作るAndroidアプリ開発seminar
by
kujirahand kujira
PDF
進化するオープンソース・エンタープライズCMSがWeb戦略を変える
by
Hishikawa Takuro
PDF
"От мобильных скачиваемых игр к мобильным социалкам" Юлия Палатовская, директ...
by
Julia Lebedeva
PPTX
Bangkit dari kefuturan
by
Al Faruuq
PPTX
"Инвестирование и другие способы получить деньги на игровой проект", Александ...
by
Julia Lebedeva
DOC
Web conferencing
by
mazyooonah
PDF
Kaldor1955
by
economicgrowthcucea
PDF
Harrod1974
by
economicgrowthcucea
PPTX
デザイナーのためのPHP講座 for WordPress (初級)
by
佑 小田垣佑
PDF
ゼロからつくるWord pressテーマ第9回
by
Hitsuji
More Related Content
PPTX
Android+init+process
by
Hong Jae Kwon
PDF
BackBox Linux: Simulazione di un Penetration Test
by
Andrea Draghetti
PDF
You Don't Know Query (WordCamp Netherlands 2012)
by
andrewnacin
PDF
WordPressで投稿記事情報の取得方法
by
regret raym
PDF
クライアントに感謝されるCMS導入のコツ
by
Hishikawa Takuro
PDF
CMS導入で企業のWebサイト運営はこう変わる!
by
Hishikawa Takuro
PDF
あなたがWordCamp Kansai 2014に行くべき5つの理由
by
Kojiro Fukazawa
PDF
WordPressがつくりだすCSSを利用する 初級編
by
Kojiro Fukazawa
Android+init+process
by
Hong Jae Kwon
BackBox Linux: Simulazione di un Penetration Test
by
Andrea Draghetti
You Don't Know Query (WordCamp Netherlands 2012)
by
andrewnacin
WordPressで投稿記事情報の取得方法
by
regret raym
クライアントに感謝されるCMS導入のコツ
by
Hishikawa Takuro
CMS導入で企業のWebサイト運営はこう変わる!
by
Hishikawa Takuro
あなたがWordCamp Kansai 2014に行くべき5つの理由
by
Kojiro Fukazawa
WordPressがつくりだすCSSを利用する 初級編
by
Kojiro Fukazawa
Viewers also liked
PDF
a-blog cms 2.0 を活用した新しいWeb制作のワークフロー
by
Kazumich YAMAMOTO
PDF
ユーザーにやさしい管理画面をつくるために。テーマ制作者ができること 初級編【WordCamp Kansai 2014】
by
Kojiro Fukazawa
PDF
町のウェブ屋があえて 「CMSの機能をダイエットする」 ことから提案する理由
by
Kojiro Fukazawa
PDF
concrete5で実践するリードナーチャリング
by
株式会社ND&I しかたこうき
PDF
プロトタイプ時代の WordPressテーマの作り方・考え方
by
kenji goto
PDF
WordCamp Kansai 2015 - WordPress.org フォーラム参加のススメ
by
Kojiro Fukazawa
PDF
Concrete5で運用をデザイン
by
Atushi Sugiyama
PDF
これからのCMSマーケットトレンドとPHP (for fukuoka.php)
by
株式会社ミツエーリンクス
PDF
フリーランスの事務机&お財布事情
by
Kojiro Fukazawa
KEY
エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜
by
Yuji Nojima
PDF
ノンプログラマーのためのカンタンWordPressテーマ作成入門 〜子テーマでテーマ作成&カスタマイズ〜
by
Mignon Style
PDF
クライアントと同じ方向を向くという事
by
kenji goto
PPTX
HTML5/JavaScriptで作るAndroidアプリ開発seminar
by
kujirahand kujira
PDF
進化するオープンソース・エンタープライズCMSがWeb戦略を変える
by
Hishikawa Takuro
PDF
"От мобильных скачиваемых игр к мобильным социалкам" Юлия Палатовская, директ...
by
Julia Lebedeva
PPTX
Bangkit dari kefuturan
by
Al Faruuq
PPTX
"Инвестирование и другие способы получить деньги на игровой проект", Александ...
by
Julia Lebedeva
DOC
Web conferencing
by
mazyooonah
PDF
Kaldor1955
by
economicgrowthcucea
PDF
Harrod1974
by
economicgrowthcucea
a-blog cms 2.0 を活用した新しいWeb制作のワークフロー
by
Kazumich YAMAMOTO
ユーザーにやさしい管理画面をつくるために。テーマ制作者ができること 初級編【WordCamp Kansai 2014】
by
Kojiro Fukazawa
町のウェブ屋があえて 「CMSの機能をダイエットする」 ことから提案する理由
by
Kojiro Fukazawa
concrete5で実践するリードナーチャリング
by
株式会社ND&I しかたこうき
プロトタイプ時代の WordPressテーマの作り方・考え方
by
kenji goto
WordCamp Kansai 2015 - WordPress.org フォーラム参加のススメ
by
Kojiro Fukazawa
Concrete5で運用をデザイン
by
Atushi Sugiyama
これからのCMSマーケットトレンドとPHP (for fukuoka.php)
by
株式会社ミツエーリンクス
フリーランスの事務机&お財布事情
by
Kojiro Fukazawa
エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜
by
Yuji Nojima
ノンプログラマーのためのカンタンWordPressテーマ作成入門 〜子テーマでテーマ作成&カスタマイズ〜
by
Mignon Style
クライアントと同じ方向を向くという事
by
kenji goto
HTML5/JavaScriptで作るAndroidアプリ開発seminar
by
kujirahand kujira
進化するオープンソース・エンタープライズCMSがWeb戦略を変える
by
Hishikawa Takuro
"От мобильных скачиваемых игр к мобильным социалкам" Юлия Палатовская, директ...
by
Julia Lebedeva
Bangkit dari kefuturan
by
Al Faruuq
"Инвестирование и другие способы получить деньги на игровой проект", Александ...
by
Julia Lebedeva
Web conferencing
by
mazyooonah
Kaldor1955
by
economicgrowthcucea
Harrod1974
by
economicgrowthcucea
Similar to これからのpre_get_postsの話をしよう
PPTX
デザイナーのためのPHP講座 for WordPress (初級)
by
佑 小田垣佑
PDF
ゼロからつくるWord pressテーマ第9回
by
Hitsuji
PDF
4時間まったりWordPressテーマ作成講座
by
Shinichi Nishikawa
PDF
テーマ制作時の疑問とノンプログラマーにも優しいテーマを考える
by
Tsuyoshi.
PDF
WordPress実践 導入からカスタマイズまで
by
Takashi Uemura
PDF
WordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニック
by
Takashi Uemura
KEY
フラットなPHPからフレームワークへ
by
Masao Maeda
KEY
フラットなPHPからフレームワークへ
by
VOYAGE GROUP
デザイナーのためのPHP講座 for WordPress (初級)
by
佑 小田垣佑
ゼロからつくるWord pressテーマ第9回
by
Hitsuji
4時間まったりWordPressテーマ作成講座
by
Shinichi Nishikawa
テーマ制作時の疑問とノンプログラマーにも優しいテーマを考える
by
Tsuyoshi.
WordPress実践 導入からカスタマイズまで
by
Takashi Uemura
WordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニック
by
Takashi Uemura
フラットなPHPからフレームワークへ
by
Masao Maeda
フラットなPHPからフレームワークへ
by
VOYAGE GROUP
More from Hishikawa Takuro
PDF
これから concrete5 を始める Web 制作者に伝えたい concrete5 と WordPress ここが一緒、ここが違う!
by
Hishikawa Takuro
PDF
エンジニアのための営業入門
by
Hishikawa Takuro
PDF
concrete5 CMS「運用」ケーススタディ
by
Hishikawa Takuro
PDF
Calypso動かしてみたよ!
by
Hishikawa Takuro
PDF
concrete5の紹介
by
Hishikawa Takuro
PDF
concrete5 最新事情 2015
by
Hishikawa Takuro
PDF
concrete5セミナー資料公開版
by
Hishikawa Takuro
PDF
WordPress使いのためのconcrete5入門
by
Hishikawa Takuro
PDF
concrete5で行なうcms導入提案のポイント
by
Hishikawa Takuro
PDF
concrete5.7のご紹介
by
Hishikawa Takuro
PDF
世界一即戦力なCMS
by
Hishikawa Takuro
PDF
はじめての concrete5 でウェブサイト作成〜入門チュートリアルガイド
by
Hishikawa Takuro
PDF
オープンソースCMSに学ぶ、前PSR時代のプロジェクトが脱レガシーする5つの方法
by
Hishikawa Takuro
PDF
Getting Started with WordPress JSON REST API
by
Hishikawa Takuro
PDF
concrete5 in Japan 2014
by
Hishikawa Takuro
PDF
concrete5 バージョン5.7のご紹介
by
Hishikawa Takuro
PDF
concrete5 5.6.3.1日本語版の紹介
by
Hishikawa Takuro
PDF
concrete5デザインカスタマイズに必要なPHPの知識
by
Hishikawa Takuro
PDF
concrete5って何?〜Web制作者対象〜2014年版
by
Hishikawa Takuro
PDF
コミュニティと仕事論
by
Hishikawa Takuro
これから concrete5 を始める Web 制作者に伝えたい concrete5 と WordPress ここが一緒、ここが違う!
by
Hishikawa Takuro
エンジニアのための営業入門
by
Hishikawa Takuro
concrete5 CMS「運用」ケーススタディ
by
Hishikawa Takuro
Calypso動かしてみたよ!
by
Hishikawa Takuro
concrete5の紹介
by
Hishikawa Takuro
concrete5 最新事情 2015
by
Hishikawa Takuro
concrete5セミナー資料公開版
by
Hishikawa Takuro
WordPress使いのためのconcrete5入門
by
Hishikawa Takuro
concrete5で行なうcms導入提案のポイント
by
Hishikawa Takuro
concrete5.7のご紹介
by
Hishikawa Takuro
世界一即戦力なCMS
by
Hishikawa Takuro
はじめての concrete5 でウェブサイト作成〜入門チュートリアルガイド
by
Hishikawa Takuro
オープンソースCMSに学ぶ、前PSR時代のプロジェクトが脱レガシーする5つの方法
by
Hishikawa Takuro
Getting Started with WordPress JSON REST API
by
Hishikawa Takuro
concrete5 in Japan 2014
by
Hishikawa Takuro
concrete5 バージョン5.7のご紹介
by
Hishikawa Takuro
concrete5 5.6.3.1日本語版の紹介
by
Hishikawa Takuro
concrete5デザインカスタマイズに必要なPHPの知識
by
Hishikawa Takuro
concrete5って何?〜Web制作者対象〜2014年版
by
Hishikawa Takuro
コミュニティと仕事論
by
Hishikawa Takuro
これからのpre_get_postsの話をしよう
1.
これからのby @HissyNC /
WordBench Kobe Grouppre_get_posts: What's the Right Way to Use?pre_get_postsの話をしよう1
2.
query_posts非推奨?『query_postsを捨てよ、pre_get_postsを使おう』というブログ記事を公開したところ、はてブなどでバズる。「いつの間にこんなことになっていたんだよ…」「非推奨だなんて!いますぐ直さなきゃ!」「急に言われても困る」「query_posts使いまくってたぜマジかよ…」「初心者にこの説明はキツイでしょ」等々の意見が噴出。2
3.
pre_get_postsとは何か?結局、Codexのquery_postsのページに非推奨の文字が入ったのは一時的なもので、その後表現が修正され、「query_postsの代わりにpre_get_postsフィルターを使うことを強く推奨する」となった。ではなぜ数多のWordPress本でも紹介されているquery_postsが推奨されないのだろうか。pre_get_postsフィルターとは何なのか。3
4.
まずテンプレートとは何か4
5.
データベースから目的のデータを取得して表示するためのもの5
6.
ではない6
7.
テンプレートとは表示するデータを整形するためのもの7
8.
データを取得する目的には本来使わない8
9.
どんなデータを取得するかを決定するのは9
10.
URL10
11.
?p=1?cat=1?cat=1&post_type=book&paged=2クエリー・ストリングという$query_string11
12.
URLでどのデータを取得するかが決まるどんな処理を行うかが決まる12
13.
ほかのCMSでも同じ13
14.
URLがページの内容を表している=インターネットの基本的な概念14
15.
ここで疑問15
16.
Webページにはたくさんのデータが表示されており各ページで共通のものもある16
17.
たとえばサイドバーに新着記事を5件表示URLとは関係なくどのページにもある17
18.
記事の下に関連記事を5件表示URLとは間接的に関係があるが直接示しているものではない18
19.
これらをサブクエリーと呼ぶ19
20.
?p=1?cat=1?cat=1&post_type=book&paged=2クエリー・ストリングと直接対応しているデータのことを20
21.
メインクエリーと呼ぶ21
22.
メインクエリーとサブクエリー違いを理解しよう22
23.
トップページの内容としてニュースカテゴリーの記事を表示するメインクエリーorサブクエリー?23
24.
トップページの内容としてニュースカテゴリーの記事を表示するメインクエリーorサブクエリー?24
25.
WordPressでは、フロントページは新着投稿か、固定ページか、2択です。CMSとしてはそれだけ?と違和感がありますが、そういう設計ですので、本来特定のカテゴリーの記事をトップページで表示するのはWordPressではできません。get_postsを使うか、ウィジェットを使いましょう25
26.
query_postsの迷宮26
27.
query_postsとは本来メインクエリーを改変するためのもの27
28.
http://example.com/?cat=128
29.
http://example.com/?cat=1カテゴリーID が 128
30.
http://example.com/?cat=1have_posts() = 投稿が存在する?カテゴリーID
が 128
31.
http://example.com/?cat=1have_posts() = 投稿が存在する?カテゴリーID
が 1the_post() = テンプレートタグを有効化28
32.
http://example.com/?cat=1have_posts() = 投稿が存在する?カテゴリーID
が 1the_post() = テンプレートタグを有効化<a href= <?php the_permalink(); ?> ><h2><?php the_title(); ?></a></h2>28
33.
http://example.com/?cat=1have_posts() = 投稿が存在する?カテゴリーID
が 1the_post() = テンプレートタグを有効化<a href= <?php the_permalink(); ?> ><h2><?php the_title(); ?></a></h2>↓次の投稿へhave_posts() = 投稿が存在する?28
34.
カテゴリーを指定しているが、それ以外は?表示件数(10件?)並び順(投稿日が新しい順)投稿タイプ(投稿)デフォルト設定がある29
35.
メインクエリーにはデフォルト設定がある30
36.
メインクエリーのデフォルト設定を変更したい= query_posts31
37.
32
38.
?cat=132
39.
?cat=1 デフォルト設定32
40.
?cat=1 デフォルト設定クエリーストリングの生成32
41.
?cat=1条件分岐タグの設定デフォルト設定クエリーストリングの生成32
42.
?cat=1条件分岐タグの設定デフォルト設定データベースから投稿を取得クエリーストリングの生成32
43.
?cat=1条件分岐タグの設定デフォルト設定データベースから投稿を取得使用するテンプレートの読み込みクエリーストリングの生成32
44.
?cat=1have_posts() = 投稿が存在する?the_post()
= テンプレートタグを有効化<a href= <?php the_permalink(); ?> ><h2>条件分岐タグの設定デフォルト設定データベースから投稿を取得使用するテンプレートの読み込みクエリーストリングの生成32
45.
?cat=1have_posts() = 投稿が存在する?the_post()
= テンプレートタグを有効化条件分岐タグの設定デフォルト設定データベースから投稿を取得使用するテンプレートの読み込みクエリーストリングの生成32
46.
?cat=1have_posts() = 投稿が存在する?the_post()
= テンプレートタグを有効化条件分岐タグの設定デフォルト設定データベースから投稿を取得使用するテンプレートの読み込みquery_posts() = 投稿の再取得クエリーストリングの生成32
47.
?cat=1have_posts() = 投稿が存在する?the_post()
= テンプレートタグを有効化条件分岐タグの設定デフォルト設定データベースから投稿を取得使用するテンプレートの読み込みquery_posts() = 投稿の再取得クエリーストリングの生成32
48.
?cat=1have_posts() = 投稿が存在する?the_post()
= テンプレートタグを有効化条件分岐タグの設定デフォルト設定データベースから投稿を取得使用するテンプレートの読み込みquery_posts() = 投稿の再取得クエリーストリングの生成32
49.
?cat=1have_posts() = 投稿が存在する?the_post()
= テンプレートタグを有効化条件分岐タグの設定デフォルト設定データベースから投稿を取得使用するテンプレートの読み込みquery_posts() = 投稿の再取得クエリーストリングの生成クエリーストリングの再生成32
50.
?cat=1have_posts() = 投稿が存在する?the_post()
= テンプレートタグを有効化条件分岐タグの設定デフォルト設定データベースから投稿を取得使用するテンプレートの読み込みquery_posts() = 投稿の再取得クエリーストリングの生成クエリーストリングの再生成条件分岐タグの再設定32
51.
?cat=1have_posts() = 投稿が存在する?the_post()
= テンプレートタグを有効化条件分岐タグの設定デフォルト設定データベースから投稿を取得使用するテンプレートの読み込みquery_posts() = 投稿の再取得クエリーストリングの生成クエリーストリングの再生成条件分岐タグの再設定データベースから投稿を再取得32
52.
?cat=1have_posts() = 投稿が存在する?the_post()
= テンプレートタグを有効化条件分岐タグの設定デフォルト設定データベースから投稿を取得使用するテンプレートの読み込みquery_posts() = 投稿の再取得クエリーストリングの生成クエリーストリングの再生成条件分岐タグの再設定データベースから投稿を再取得query_posts以前のアレコレが消えてしまった!32
53.
大丈夫!戻す手段があります33
54.
wp_reset_query()query_posts発動前の状態に戻す34
55.
query_posts何が問題なのか?35
56.
ページ送りが効かない(頻出)原因 = $query_stringと結合していないglobal
$query_string;query_posts( $query_string .'&order=ASC' );36
57.
条件分岐タグの設定データベースから投稿を取得使用するテンプレートの読み込みquery_posts() = 投稿の再取得query_posts()以前の条件でテンプレートが選ばれてしまう=意図せず404になる37
58.
条件分岐タグの設定データベースから投稿を取得使用するテンプレートの読み込みquery_posts() = 投稿の再取得条件分岐タグの再設定2回DBから投稿データを取得=非効率、表示遅速の原因38
59.
条件分岐タグの設定データベースから投稿を取得使用するテンプレートの読み込みquery_posts() = 投稿の再取得条件分岐タグの再設定条件分岐タグが上書きされる=混乱のもと39
60.
条件分岐タグの上書きと、query_posts()をサブクエリーの取得に使ってしまう間違いが重なるとカオス40
61.
header.phpfooter.phpcategory.phpis_category() = truesidebar.phpでquery_posts()を使用wp_reset_query()書き忘れis_category()
= falseテンプレートファイルをまたいで影響が出る41
62.
まとめ42
63.
query_postsは便利だが、影響範囲が大きすぎる43
64.
条件分岐の上書きは初心者には分かりにくい44
65.
これからの推奨される方法45
66.
メインクエリーの改変=pre_get_posts46
67.
サブクエリーの作成=get_posts47
68.
サブクエリーの作成=get_posts条件分岐タグが書き換わらない47
69.
用途によって使いわけよう48
70.
メインクエリーの改変=pre_get_posts49
71.
function 関数( $query
) {if ( is_admin() ¦¦ ! $query->is_main_query() )return;if ( クエリーの改変を適用する条件 ) {$query->set( パラメーター , 値 );return;}}add_action( 'pre_get_posts', '関数名' );pre_get_posts基本文法50
72.
function 関数( $query
) {if ( is_admin() ¦¦ ! $query->is_main_query() )return;if ( クエリーの改変を適用する条件 ) {$query->set( パラメーター , 値 );return;}}add_action( 'pre_get_posts', '関数名' );pre_get_posts基本文法管理画面とメインクエリー以外には適用しない51
73.
function 関数( $query
) {if ( is_admin() ¦¦ ! $query->is_main_query() )return;if ( クエリーの改変を適用する条件 ) {$query->set( パラメーター , 値 );return;}}add_action( 'pre_get_posts', '関数名' );pre_get_posts基本文法表示条件を変更したいページを絞り込む52
74.
function 関数( $query
) {if ( is_admin() ¦¦ ! $query->is_main_query() )return;if ( クエリーの改変を適用する条件 ) {$query->set( パラメーター , 値 );return;}}add_action( 'pre_get_posts', '関数名' );pre_get_posts基本文法メインクエリーのパラメーターを設定53
75.
function 関数( $query
) {if ( is_admin() ¦¦ ! $query->is_main_query() )return;if ( クエリーの改変を適用する条件 ) {$query->set( パラメーター , 値 );return;}}add_action( 'pre_get_posts', '関数名' );pre_get_posts基本文法関数の名前は自由につけて良い54
76.
function 関数( $query
) {if ( is_admin() ¦¦ ! $query->is_main_query() )return;if ( クエリーの改変を適用する条件 ) {処理return;}}add_action( 'pre_get_posts', '関数名' );pre_get_posts基本文法【最重要】テーマのfunctions.phpに記載するquery_postsの様に各テンプレートには書かない55
77.
?cat=1 デフォルト設定条件分岐タグの設定have_posts() =
投稿が存在する?the_post() = テンプレートタグを有効化<a href= <?php the_permalink(); ?> ><h2>データベースから投稿を取得使用するテンプレートの読み込みクエリーストリングの生成56
78.
?cat=1 デフォルト設定条件分岐タグの設定have_posts() =
投稿が存在する?the_post() = テンプレートタグを有効化データベースから投稿を取得使用するテンプレートの読み込みクエリーストリングの生成56
79.
?cat=1 デフォルト設定条件分岐タグの設定have_posts() =
投稿が存在する?the_post() = テンプレートタグを有効化データベースから投稿を取得使用するテンプレートの読み込みクエリーストリングの生成pre_get_posts フィルター= クエリーストリングに無い条件の追加56
80.
function exclude_category_at_home( $query
) {if ( is_admin() ¦¦ ! $query->is_main_query() )return;if ( $query->is_home() ) {$query->set( 'cat', '-1,-1347' );return;}}add_action( 'pre_get_posts','exclude_category_at_home' );メインページから特定のカテゴリーを除外する57
81.
function exclude_category_at_home( $query
) {if ( is_admin() ¦¦ ! $query->is_main_query() )return;if ( $query->is_home() ) {$query->set( 'cat', '-1,-1347' );return;}}add_action( 'pre_get_posts','exclude_category_at_home' );メインページから特定のカテゴリーを除外するメインページのみに制限注意:is_home() ではなく$query->is_home()58
82.
function exclude_category_at_home( $query
) {if ( is_admin() ¦¦ ! $query->is_main_query() )return;if ( $query->is_home() ) {$query->set( 'cat', '-1,-1347' );return;}}add_action( 'pre_get_posts','exclude_category_at_home' );メインページから特定のカテゴリーを除外する$query->set( パラメーター , 値 );使えるパラメーターはCodexの関数リファレンス/WP_Queryを参照59
83.
function search_exclude_cat_1( $query
) {if ( is_admin() ¦¦ ! $query->is_main_query() )return;if ( $query->is_search() ) {$query->set( 'category__not_in', array(1) );return;}}add_action( 'pre_get_posts','search_exclude_cat_1' );検索結果から特定のカテゴリーを除外する60
84.
function search_exclude_cat_1( $query
) {if ( is_admin() ¦¦ ! $query->is_main_query() )return;if ( $query->is_search() ) {$query->set( 'category__not_in', array(1) );return;}}add_action( 'pre_get_posts','search_exclude_cat_1' );検索結果から特定のカテゴリーを除外する検索結果でIDが1のカテゴリーを除外配列で指定することもできる61
85.
function search_only_post( $query
) {if ( is_admin() ¦¦ ! $query->is_main_query() )return;if ( $query->is_search() ) {$query->set( 'post_type', 'post' );return;}}add_action( 'pre_get_posts','search_only_post' );検索結果から固定ページを除外(投稿のみ)62
86.
function search_only_post( $query
) {if ( is_admin() ¦¦ ! $query->is_main_query() )return;if ( $query->is_search() ) {$query->set( 'post_type', 'post' );return;}}add_action( 'pre_get_posts','search_only_post' );検索結果から固定ページを除外(投稿のみ)検索結果のみに制限Codexのサンプルは$query->is_searchプロパティを見るより関数で書こう$query->is_search() → ○63
87.
function set_post_per_page( $query
) {if ( is_admin() || ! $query->is_main_query() )return;if ( $query->is_home() ) {$query->set( 'posts_per_page', 1 );return;}if ( $query->is_post_type_archive( 'movie' ) ) {$query->set( 'posts_per_page', 50 );return;}}add_action( 'pre_get_posts', 'set_post_per_page');条件にしたがって表示件数を変更64
88.
function set_post_per_page( $query
) {if ( is_admin() || ! $query->is_main_query() )return;if ( $query->is_home() ) {$query->set( 'posts_per_page', 1 );return;}if ( $query->is_post_type_archive( 'movie' ) ) {$query->set( 'posts_per_page', 50 );return;}}add_action( 'pre_get_posts', 'set_post_per_page');条件にしたがって表示件数を変更メインページでは1件表示65
89.
function set_post_per_page( $query
) {if ( is_admin() || ! $query->is_main_query() )return;if ( $query->is_home() ) {$query->set( 'posts_per_page', 1 );return;}if ( $query->is_post_type_archive( 'movie' ) ) {$query->set( 'posts_per_page', 50 );return;}}add_action( 'pre_get_posts', 'set_post_per_page');条件にしたがって表示件数を変更movie 投稿タイプのアーカイブでは50件表示66
90.
注意点あくまでパラメーターの追加固定ページをアーカイブに等根本的に変更するのは厳しい= サブクエリーを使う67
91.
注意点一部の条件分岐はpre_get_postsのタイミングでは動作しない例:is_front_page()68
92.
サブクエリーの作成=get_posts69
93.
global $post;$args =
array( 'posts_per_page' => 5, 'cat' => 1 );$myposts = get_posts( $args );foreach( $myposts as $post ) {setup_postdata($post);?><h1><?php the_title(); ?></h1><?php}wp_reset_postdata();get_posts記述例70
94.
global $post;$args =
array( 'posts_per_page' => 5, 'cat' => 1 );$myposts = get_posts( $args );foreach( $myposts as $post ) {setup_postdata($post);?><h1><?php the_title(); ?></h1><?php}wp_reset_postdata();get_posts記述例テンプレートタグのセットアップテンプレートタグのリセット71
95.
Codexで get_postsのサンプルの書き方が微妙にまちまちCodexの改善に期待72
96.
$args = array('posts_per_page'
=> 5,'offset' => 0,'cat' => 0,'orderby' => 'post_date','order' => 'DESC','post_type' => 'post','post_status' => 'publish','suppress_filters' => true,'ignore_sticky_posts' => true,'no_found_rows' => true);WP_Query記述例$the_query = new WP_Query( $args );if ( $the_query->have_posts() ) {while ( $the_query->have_posts() ) {$the_query->the_post();?><h1><?php the_title(); ?></h1><?php}}wp_reset_postdata();上級者向けかも73
97.
まとめ74
98.
メインクエリーの変更はpre_get_postsサブクエリーの作成はget_posts (or WP_Query)使い分ける75
99.
Thanks!質問は公式フォーラムまたは Twitter: @HissyNC
まで76
Download
[8]
ページ先頭
©2009-2025
Movatter.jp