固定ページをID指定で1ページ表示させる方法

よくテストで使うのでメモ

ページIDは123とします。
headerやfooterは適宜取得・表示させて下さい。

wordpress同ドメインでマルチサイト

wordpressのマルチサイトは基本、複数のドメインで使うことが前提。
同ドメインでもマルチサイトが使えますが、やめたほうが良いです。

以下、失敗したなぁと思う点
・フォーム、スライダーなどの設定をサイトの数だけ設定する必要がある
単純にめんどくさいです。
・switch_to_blog()がうまく動かないことがある
原因不明です。単純な投稿ループは問題ありませんが、カスタムタクソノミー・カスタム投稿を複数設定するとうまく取得できないことがありました。
同じブログ無いだと問題ないので、wordpressのバグだと思います。
・テーマを分けたり統合したりが終わらない
管理能力が低いだけかもしれません。頻繁にサイトの変更がある場合、結構めんどくさいです。
・他
他にもユーザーの管理やらプラグインの設定やらでめんどくさいだけです。

以下、成功したなぁと思う点
・複雑な機能を使うことにより自分の仕事のランクが高くなったような気分になれる
最初だけです。

後はひたすらめんどくさいとしか感じませんでした。
同ドメインのマルチサイト、やめとき。

is_home()がfalseになる

is_home()
はテンプレートファイルにhome.phpを使っているかどうかの判定です。

…/wp-admin/options-reading.php
のフロントページの表示で固定ページを選んだ場合(page.phpを読み込んでいる場合)は、
is_home()はfalseを返します。

phpならページID、javasscriptならURLで判断すると良いと思います。

別の子サイトのタクソノミーの親子関係は取得できない

マルチサイトの時、
switch_to_blog( $blogID);
等で別サイトの投稿を取得することがあると思います。
しかし、何故かタクソノミーの親子関係は取得することが出来ません。おそらくバグでしょう。
is_taxonomy_hierarchical()で調べましたが、親子関係があると認識されていませんでした。

ID1のサイトで親子関係が有るareaタクソノミーを作成します。
ID1のサイトでは
var_dump(is_taxonomy_hierarchical(‘area’));
はtrueが返ります。

ID2の別サイトでは
switch_to_blog(1);
var_dump(is_taxonomy_hierarchical(‘area’));
はfalseが返ります。

取得する時は、タクソノミーを作成したサイト側でcsv等でtxtファイル等に吐き出し、
それを他のサイトで読み込んで使用するという形になります。
はっきり言ってかなりめんどくさかったです…。

wordpressでの基本的な投稿取得方法

ほとんど備忘録ですが、以下の様な感じで。

予定表をwordpressで作成

今日以降のスケジュールを全て習得する場合
scheduleカスタム投稿タイプにdateというカスタムフィールドを設定しておく。

wordpressで記事を自動削除

ページにアクセスした時、任意の条件で投稿を自動で削除します。
自動で定期的にアクセスする方法と組み合わせれば、定期的に投稿を消し続けることが出来ます。

phpで投稿添付ファイルを削除、また投稿を削除する方法
例として、カスタム投稿タイプ「flier」、カスタムフィールド「end」に日付が入っている状態で
一ヶ月前のものを消したいとします。

wordpressとsakuraサーバーでcronを使う

2015/6/30追記あり

cronとは指定した時間に自動処理を行うサーバーの機能のことです。
(毎時間や毎分なども設定できますが、あまりに短い感覚で重い処理を走らせるとサーバー会社から止められる可能性があります)
今回はそのcronを使い、定期的にどこかのwebサイトにアクセスする場合の設定です。
私は別サイトで投稿を自動削除と組み合わせ、定期的に古い投稿の自動削除をしています。

さくらコントロールパネルのcronに以下を入力します。
‘http://example.com/example/’はアクセスしたいURLになります。もちろん同じサイト内でも問題はありません。

/usr/local/bin/wget ‘http://example.com/example/’
毎月 毎日 0時 0分
日月火水木金土


2015/06/30追記
すいません、この方法でゴミファイルが大量生産されることがわかりました。
正しくは以下です。
/usr/local/bin/wget -O – ‘http://example.com/example/’ 1> /dev/null