私はそれがうまくいくはずだと知っています、これが最近のバグなのか何かなのか知りません。それで、それを確認するために、私はデフォルトテーマを使って新鮮なワードプレスをインストールしました。私は蛇腹のような小さなプラグインを作りました:
<?php
/*
Plugin Name: Test
Plugin URI: http://www.something.com
Description: To test
Version: 1.0
Author: Yet another dev
Author URI: http://me.com
*/
add_filter('post_type_link', 'wpse33551_post_type_link', 1, 2);
function wpse33551_post_type_link( $link, $post = 0 ){
return home_url( 'temp-tests/' . $post->ID );
}
add_action('init', 'sfsafsdsf_test');
function sfsafsdsf_test(){
wp_die(get_permalink(1));
}
しかし、どういうわけかそれはまだ示しています:
http://example.com/2016/06/22/hello-world/
私が何かが間違っているかどうか私に知らせてください。
編集
私の懸念は、上記のコードがこれを出力するべきであるということです(あるいは、私が何かが間違っているかどうか私に知らせてください)
http://example.com/temp-tests/1
私が「出力」と言ったとき、私はpostID#1のためのパーマリンクがそのようであるべきであることを意味します。
編集2
いいえ、これはカスタム投稿タイプではありません。これにはデフォルトの "post"を使用しています。
それはバグではありません。 @LuisSanzが指摘したように、 post_type_link
は組み込みのpost
投稿型には使用されません。カスタム投稿タイプにのみ使用されます。
get_permalink()
functionを読み飛ばすと、WordPressはpost_type_link
フィルターを使用せずに post_link
filterを使用することがわかります。それはあなたが間違ったフィルタを使っているということです。
その後、post_type_link
をpost_link
に変更すると問題が解決します。
add_filter('post_link', 'wpse230567_filter_post_link', 1, 2);
function wpse230567_filter_post_link($link, $post = 0)
{
return home_url('temp-tests/' . $post->ID);
}