Ich weiß, es sollte gut funktionieren, ich weiß nicht, ob das ein neuer Bug oder so ist. Um das zu bestätigen, habe ich ein neues WordPress mit dem Standard-Theme installiert. Ich habe ein kleines Plugin wie folgt erstellt:
ID ); } add_action('init', 'sfsafsdsf_test'); function sfsafsdsf_test(){ wp_die(get_permalink(1)); }
Aber aus irgendeinem Grund zeigt es immer noch:
http://example.com/2016/06/22/hello-world/
Lass es mich wissen, wenn ich etwas falsch mache.
Bearbeiten
Meine Sorge ist, dass obige Code sollte dies ausgeben (oder lassen Sie mich wissen, wenn ich etwas falsch mache):
http://example.com/temp-tests/1
Wenn ich “output” sage, meine ich, der Permalink für postID # 1 sollte so sein.
Bearbeiten 2
Nein, dies ist kein benutzerdefinierter Post-Typ. Ich verwende dafür den Standard “post”.
Es ist kein Fehler. Wie @LuisSanz darauf hingewiesen hat, wird post_type_link
nicht für den integrierten post
Post-Typ verwendet. Es wird nur für benutzerdefinierte Post-Typen verwendet.
Überfliegen get_permalink()
function get_permalink()
. Sie werden feststellen, dass WordPress den post_type_link
Filter nicht verwendet, sondern den post_link
Filter verwendet. Es bedeutet, dass Sie einen falschen Filter verwenden.
Dann sollte post_type_link
in post_link
werden, um das Problem zu beheben:
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); }