私はWordpressでカスタム投稿タイプを作成しました。私が解決する必要がある唯一のものはこのCTPによって作成されたパーマリンクです。
私は現在持っています:
example.com/<custom-post-name>/<post-id>/<postname>/
post-idだけを表示したい:
example.com/<custom-post-name>/<post-id>/
カスタム投稿タイプは以下のもので登録されます。
function create_post_type_mycustomname() {
$args = array(
'capability_type' => 'post',
'has_archive' => 'mycustomname',
'rewrite' => array(
'slug' => '/mycustomname/%post_id%',
'feeds' => false
)
);
register_post_type('ctp_mycustomname', $args);
}
add_action('init', 'create_post_type_mycustomname');
また、スラッグ内の%post_id
は次のように置き換えられています。
function custom_post_mycustomname_link($post_link, $post = 0, $leavename = false) {
if($post->post_type == 'ctp_mycustomname') {
return str_replace('%post_id%', $post->ID, $post_link);
}
else {
return $post_link;
}
}
add_filter('post_type_link', 'custom_post_mycustomname_link', 1, 3);
これらの種類のURLからポスト名を削除する方法についてのヒントはありますか?
私は自分で答えを見つけた - だからここに上記の問題への更新があります:
カスタム投稿タイプ登録:
function create_post_type_mycustomname() {
$args = array(
'capability_type' => 'post',
'has_archive' => 'mycustomname',
'rewrite' => array(
'slug' => '/mycustomname',
'feeds' => false
)
);
register_post_type('ctp_mycustomname', $args);
}
add_action('init', 'create_post_type_mycustomname');
リンクを変更してください。
function mycustomname_links($post_link, $post = 0) {
if($post->post_type === 'ctp_mycustomname') {
return home_url('mycustomname/' . $post->ID . '/');
}
else{
return $post_link;
}
}
add_filter('post_type_link', 'mycustomname_links', 1, 3);
正しい書き換えルールを追加します。
function mycustomname_rewrites_init(){
add_rewrite_rule('mycustomname/([0-9]+)?$', 'index.php?post_type=ctp_mycustomname&p=$matches[1]', 'top');
}
add_action('init', 'mycustomname_rewrites_init');
あとでWordpressバックエンドの書き換え規則をフラッシュしたら、行ってもいいですよ!