doudonn WEB制作やサーバーの話とかいろいろ

ワードプレスの記事のステータスでの条件分岐方法(公開・下書き・非公開など)

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');
?>

実際にはショートコードに引数を付けてやります。
じゃないと関数が永遠に増えてしまう。

デザイン的に下書き状態の時にも仮に表示するようにした方がいい。
広告リンクのテキストだけ表示するのがベスト。

「ログインしている時は非表示」とするのが一番ですが、
それだと確認が面倒になるので、そこまでは不要だろう。

こんな感じでアフィリエイターはしっかり使いこなしたい。

--

ワードプレスの関連記事

記事一覧はこちら:ワードプレス

管理人について
doudonn
名前:doudonn(どうどん)
ひたすらWEB制作な人。
一応社長です。音ゲー好き

<Twitterはこちら>
ゲーム垢
WEB制作垢
お知らせ

2022年11月30日に全記事削除しました。
まだ再開に向け作りかけ。


無駄にページ表示速度にこだわってます。

役立ちサイト
wiki
© 2022-2023 doudonn All Rights Reserved.