好的,我找到了一种方法,如果有人需要创建永久链接或更改虚拟页面或动态页面的永久链接,下面是方法:
这个get_permalink()
, the_permalink()
和get_the_permalink()
可以使用post_type_link
, page_link
和/或post_link
过滤器,每一个都是针对一种帖子的。
这就是我最终得到的函数:
function mytableplugin_rename_permalink($url, $post) {
$table = get_page_by_path(\'mytablepluginpage\');
global $wp;
if ( \'integer\' === gettype( $post ) ) {
$post_id = $post;
} else {
$post_id = $post->ID;
}
// check if we are targetting the plugin page
if ( $table->ID == $post_id ) {
$url = home_url( $wp->request );
}
apply_filters( \'mytableplugin\', home_url( $wp->request ), get_the_ID(), false );
// Return the value of the URL
return $url;
}
add_filter( \'post_type_link\', \'mytableplugin_rename_permalink\', 10, 2 );
add_filter( \'page_link\', \'mytableplugin_rename_permalink\', 10, 2 );
add_filter( \'post_link\', \'mytableplugin_rename_permalink\', 10, 2 );
我不必添加所有三个过滤器,但我这样做是为了避免在插件中更改页面的帖子类型时出现任何问题。
我从this page 和this question
它修复了规范URL、永久链接和translatePress问题。