【投稿・カスタム投稿】プレビューのリンク先を変更する方法【一覧はあるが詳細はない場合】
PHP
Wordpress
NEWSなど、一覧画面は存在させたいが詳細画面は不要ということがあると思います。
そういう場合、私は投稿・カスタム投稿で制作することが多いです。
ただそうするとプレビューボタンを押したとき、意図しない画面が表示されてしまうことがあります。
そのプレビューボタンを押したときには、一覧画面を表示させたい。
そんな場合は以下のような設定をするとプレビュー時に一覧画面表示になります。
functions.php
//プレビューを押したときのリンク先を変更
add_filter( 'preview_post_link', function($link) {
global $post_type;
if($post_type == 'post'){//これが投稿の場合の設定、カスタム投稿では変更する
$link=home_url("/news/?preview=true");//preview=trueがないとpreview判定にならない
}
return $link;
});
一覧画面
//一覧画面
$args = array(
'post_type' => array('post'),
'paged' => $paged,
'posts_per_page' => -1,
'has_password' => false
);
//重要なのはここ
if(is_preview()&&is_user_logged_in()){//プレビュー時かつログイン時
$args += array('post_status' => array( 'publish', 'draft' ));//通常の一覧と下書き表示
}
$my_query = new WP_Query($args);
if( $my_query -> have_posts() ) : while($my_query -> have_posts()) : $my_query -> the_post();
省略
endwhile;endif;
正直なくても動きはしますが
設定したほうが、使用者としては使いやすいでしょう。
ではでは。