『WordPressの投稿画面でプレビュー先を変更したい』
『投稿個別ページを作成していないのでプレビュー先を投稿一覧ページにしたい』
『投稿個別ページを作成していないのでプレビュー先を投稿一覧ページにしたい』
こういった悩みに答えます。
本記事の内容
- 投稿画面のプレビュー先を一覧ページに変更する
Webエンジニア歴2年
WordPressの運営&立ち上げ70サイト以上かかわっている
こういった私が解説していきます。
1. 投稿画面のプレビュー先を一覧ページに変更する
- その①:functions.phpにコードを書く
- その②:archive-○○○.phpにコードを書く
その①:functions.phpにコードを書く
コピペでOK
次のコードをfunctions.phpの最後あたりにコピペしてみてください。
ここではカスタム投稿『news』で進めていきます。
リンク先は実際のコードに合わせて書き換えてくださいね。
1 2 3 4 5 6 7 8 |
// プレビュー先を変更する add_filter( 'preview_post_link', function($link) { global $post_type; if($post_type == 'news'){//カスタム投稿『news』の場合。投稿ならpost、固定ページならpage $link=home_url("/news/?preview=true");//preview=trueがないとpreview判定にならない } return $link; }); |
その②:archive-○○○.phpにコードを書く
プレビュー用のコードを追加します
先ほどfunctions.phpでプレビュー先を変えましたね。
プレビュー先のarchive-news.phpにコードを追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
//投稿を取得 $paged = get_query_var('paged') ? get_query_var('paged') : 1; $args = array( 'post_type' => 'news', 'post_status' => 'publish', 'posts_per_page' => 12, 'paged' => $paged, 'order' => 'DESC', ); //プレビュー用 if(is_preview()&&is_user_logged_in()){//プレビュー時かつログイン時 $args += array('post_status' => array( 'publish', 'draft', 'private' ));//通常の一覧・下書き・非公開を表示 } $the_query = new WP_Query($args); |
プレビューで確認しているときはプレビュー用の『post_status』を『$args』に返すことで見れるようにしています。
サイトの仕様によっては、投稿個別ページがなく、投稿一覧ページしか使わないケースもあります。
今回のコードでは、archive-news.phpだけでsingle-news.phpを作成しなくともプレビュー確認できるようになります。
(仕様になくともsingle-news.phpを作るに越したことはないのですが…^^;)
以上、プレビュー先を変更するやり方をご紹介しました。
ではまた。