下書きで保存している記事でも一覧に表示させたい場合、以下のようにquery_postsのpost_statusを指定すれば通常の記事と同じようにループに含まれて表示されます。
1 2 3 4 |
$arr = array( 'post_status' => array('publish','draft') ); query_posts($arr); |
しかしこのdraftの記事はthe_permalinkでパーマリンクが正常に取得できません。ダッシュボードで指定したルールではなく、デフォルト状態(?page=0000みたいなやつ)が取得されます。
そんなときは$postをcloneしてstatusをpublishに変更し、その上でpermalinkを取得します。
本体の$postオブジェクト(と呼んでいいのかは不明。配列と呼ぶべきでしょうか?)ではなく、あくまでcloneしたものにstatusの書き換えを行っているので、もともとの記事には何の影響もありません。
何が言いたいかよく分からない感じになりましたので、コードを見たほうが分かりやすいと思います・・・。
functions.phpに以下の記述を追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
//下書きでもパーマリンク取得 function draftlink($input){ global $post; if($post->post_status == 'draft'){ $my_post = clone $post; $my_post->post_status = 'publish'; $input = $my_post->guid; return $input; } else { return $input; } } add_filter( 'the_permalink', 'draftlink',1 ); |
ADs
ダッシュボードを使わず記事の管理や編集を行う仕組みを作っていて、ログイン時だけ下書きの記事も表示させる、みたいなことに使ってます。
ADs
コメントはまだありません。