Skip to main content More Related Content
PDF
PDF
Soal tiu tes cpns 2019 part 1 PDF
PDF
Persamaan Logaritma, sifat-sifat Logaritma PPTX
PDF
PPTX
Konvergen Seragam dan Kekontinuan, Konvergen Seragam dan Pengintegralan PPTX
Persamaan hiperbola di p (0,0) What's hot
PPTX
Lingkaran luar segitiga (circumcircle) PPT
DOCX
VD-108 kelompok 5: Operasi Biner dan Grup DOC
DOCX
Luas benda yang tidak beraturan PDF
Persamaan Trigonometri Dasar PPT
Contoh soal dan penyelesaian trigonometri secara lengkap PPTX
Persamaan dan Pertidaksamaan Kuadrat.pptx PPTX
PDF
Distribusi-t-dan-F_16-Mei-2020.pdf DOCX
Pembelajaran Matematika di SD PDF
PPTX
Exponen dan Bentuk Akar.pptx PDF
Bedah materi masalah syarat batas sekaligus pembuktian teorema 1 dan 2 sturm PDF
PPTX
STRUKTUR ALJABAR GRUP - HOMOMORFISMA PPTX
Permainan matematika PAPAN GEOMETRI PPTX
DOC
Pemodelan Matematika dalam Penentuan siklus waktu traffic light PPTX
Viewers also liked
PDF
You Don't Know Query (WordCamp Netherlands 2012) PDF
PDF
PDF
PDF
あなたがWordCamp Kansai 2014に行くべき5つの理由 PDF
WordPressがつくりだすCSSを利用する 初級編 PDF
a-blog cms 2.0 を活用した新しいWeb制作のワークフロー PDF
ユーザーにやさしい管理画面をつくるために。テーマ制作者ができること 初級編【WordCamp Kansai 2014】 PDF
町のウェブ屋があえて 「CMSの機能をダイエットする」 ことから提案する理由 PDF
PDF
プロトタイプ時代の
WordPressテーマの作り方・考え方 PDF
WordCamp Kansai 2015 - WordPress.org フォーラム参加のススメ PDF
PDF
これからのCMSマーケットトレンドとPHP (for fukuoka.php) PDF
KEY
エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜 PDF
ノンプログラマーのためのカンタンWordPressテーマ作成入門 〜子テーマでテーマ作成&カスタマイズ〜 PDF
PPTX
HTML5/JavaScriptで作るAndroidアプリ開発seminar PDF
進化するオープンソース・エンタープライズCMSがWeb戦略を変える Similar to これからのpre_get_postsの話をしよう
PPTX
デザイナーのためのPHP講座 for WordPress (初級) PDF
PDF
PDF
テーマ制作時の疑問とノンプログラマーにも優しいテーマを考える PDF
PDF
WordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニック KEY
KEY
More from Hishikawa Takuro
PDF
これから concrete5 を始める Web 制作者に伝えたい concrete5 と WordPress ここが一緒、ここが違う! PDF
PDF
PDF
PDF
PDF
PDF
PDF
WordPress使いのためのconcrete5入門 PDF
concrete5で行なうcms導入提案のポイント PDF
PDF
PDF
はじめての concrete5 でウェブサイト作成〜入門チュートリアルガイド PDF
オープンソースCMSに学ぶ、前PSR時代のプロジェクトが脱レガシーする5つの方法 PDF
Getting Started with WordPress JSON REST API PDF
PDF
PDF
PDF
concrete5デザインカスタマイズに必要なPHPの知識 PDF
concrete5って何?〜Web制作者対象〜2014年版 PDF
これからのpre_get_postsの話をしよう
- 1.
これからの
by @HissyNC /WordBench Kobe Group
pre_get_posts: What's the Right Way to Use?
pre_get_posts
の話をしよう
1
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
?cat=1
have_posts() = 投稿が存在する?
the_post()= テンプレートタグを有効化
条件分岐タグの設定
デフォルト設定
データベースから投稿を取得
使用するテンプレートの読み込み
query_posts() = 投稿の再取得
クエリーストリングの生成
クエリーストリングの再生成
条件分岐タグの再設定
データベースから投稿を再取得
query_posts以前のアレコレが消えてしまった!
32
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
- 65.
- 66.
- 67.
- 68.
- 69.
- 70.
- 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.
- 78.
- 79.
- 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.
- 91.
- 92.
- 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.
- 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.
- 98.
- 99.