例えばカスタム投稿タイプで 求人情報や製品情報などを作るが、
詳細ページは利用せずに、アーカイブページのみや特定のページにループで表示させるだけの場合。
記事を入力して、管理画面から「投稿を表示」をクリックしても、表示されるのは詳細ページのURLになるので実際に見せたいページではないので、また何回かクリックして公開画面に遷移したりする必要があるが、下記のように書くと書き換えられる。
add_filter('post_type_link', 'my_custom_public_link',10,2);
function my_custom_public_link($permalink) {
// 現在の投稿タイプを取得
$post_type = get_post_type();
// 書き換えたい投稿タイプを指定
if ( $post_type == 'recruit' ){
$permalink = '表示したいページのURL';
}
return $permalink;
}
アンカーリンクをつけたい場合
アンカーリンクをつけてその部分を表示させたい場合は
add_filter('post_type_link', 'my_custom_public_link',10,2);
function my_custom_public_link($permalink) {
// 現在の投稿タイプを取得
$post_type = get_post_type();
// 書き換えたい投稿タイプを指定
if ( $post_type == 'recruit' ){
global $post;
// 指定のURLにアンカーリンクも付けて返す
$permalink = home_url('/').'★表示したいページまでの階層★/#'.'id-'.$post->ID;
}
return $permalink;
}
となる。
勿論公開画面側のテンプレートにも
id="id-<?php echo esc_attr( $post->ID );?>"
などの記述は必要