ワードプレスの記事のステータスでの条件分岐方法(公開・下書き・非公開など)
doudonn 更新日:
下書きでのプレビュー画面では広告を表示しないなど、
地味に重要になってくるテクニックです。
ここの条件分岐は使いこなそう。
1、ワードプレスの記事状態について
ワードプレスの記事状態は主に次の5つがあります。
公開(publish)
予約投稿(future)
下書き(draft)
承認待ち(pending)
非公開(private)
これらで条件分岐する方法を解説します。
※ゴミ箱(trash)、自動保存 (auto-draft)、継承 (inherit)もありますが、
使い道がほぼ無いので省略します。
2、ステータス状態別条件分岐方法
それぞれ2パターン書きます。
(上=ループ外、下=ループ内・記事ページ)
<?php
//公開済み
if( get_post_status( $post->ID ) == 'publish'){};
if( $post->post_status == 'publish'){};
//予約投稿
if( get_post_status( $post->ID ) == 'future'){};
if( $post->post_status == 'future'){};
//下書き
if( get_post_status( $post->ID ) == 'draft'){};
if( $post->post_status == 'draft'){};
//承認待ち
if( get_post_status( $post->ID ) == 'pending'){};
if( $post->post_status == 'pending'){};
//非公開
if( get_post_status( $post->ID ) == 'private'){};
if( $post->post_status == 'private'){};
?>
「$post->post_status」を使うことが多いです。
変数としてあらかじめ取得されているので、こちらの方が高速。
3、どういう時に使うのか?
公開済以外はアドセンスを表示しないなど、
不要なカウントをしない場合に使っています。
<?php if( $post->post_status == 'publish'): ?>
ここにアドセンスのコード
<?php endif; ?>
というような感じ。
下書きで何度もアドセンスを表示させていませんか?
Googleは容赦なくページビューとしてカウントします。
その他のASPのコードも同じです。
記事中の広告なら、ショートコードでやります。
<?php
function publish1() {
$postid = get_the_ID();
if( get_post_status( $postid ) == 'publish'){
return "公開済の時に表示するコード";
}else{
return "下書きの時に表示するコード";
}
}
add_shortcode('publish1', 'publish1');
?>
実際にはショートコードに引数を付けてやります。
じゃないと関数が永遠に増えてしまう。
デザイン的に下書き状態の時にも仮に表示するようにした方がいい。
広告リンクのテキストだけ表示するのがベスト。
「ログインしている時は非表示」とするのが一番ですが、
それだと確認が面倒になるので、そこまでは不要だろう。
こんな感じでアフィリエイターはしっかり使いこなしたい。