我已经创建了1个自定义帖子和一些自定义字段。
自定义帖子类型:Tour自定义字段:Tour\\u id现在我想自定义永久链接结构,想在链接中附加“Tour\\u id”值。我正在使用下面的代码。
add_action(\'init\', \'pub_rewrite_rules\');
function pub_rewrite_rules() {
global $wp_rewrite;
$wp_rewrite->add_rewrite_tag( \'%pstname%\', \'([^/]+)\', \'post_type=tour&name=\');
$wp_rewrite->add_rewrite_tag( \'%tourid%\', \'([^/]{4})\', \'tourid=\');
$wp_rewrite->add_permastruct(\'tour\', \'/tour/%pstname%/%tourid%\', array( \'walk_dirs\' => false ));
}
function pub_permalink($permalink, $post, $leavename) {
if((false !==strpos( $permalink, \'%tourid%\') ) && get_post_type($post)==\'tour\') {
$publicationtype = get_post_meta($post->ID, \'tour_id\',true);
$rewritecode = array(\'%pstname%\',\'%tourid%\');
$rewritereplace = array($post->post_name,$publicationtype);
$permalink = str_replace($rewritecode, $rewritereplace, $permalink);
}
return $permalink;
}
我得到了正确的链接“
https://tourjourney/tour/tour-1/1000/“这里,“tour”是自定义帖子,“tour-1”是帖子标题,“1000”是tour\\u id,但在查看帖子时,我得到了“404 File Not Found error”。
我已经在函数中完成了上述代码。主题的php文件。我查过了。htaccess,这是正确的。
我想问题在于add\\u permastruct或m\'I在代码中遗漏了任何内容。
SO网友:Rachid Chihabi
我和您有同样的技术需求,我做了以下工作(代码如下):
function my_custom_rewrite_tag() {
add_rewrite_tag(\'%xxx%\', \'([^&]+)\'); //change the regex to your needs
add_rewrite_tag(\'%yyy%\', \'([^&]+)\'); //change the regex to your needs
}
add_action(\'init\', \'my_custom_rewrite_tag\', 10, 0);
function my_custom_rewrite_rule() {
add_rewrite_rule(\'^tour/([^/]*)/([^/]*)/?\',\'index.php?pagename=tour&xxx=$matches[1]&yyy=$matches[2]\',\'top\');
}
add_action(\'init\', \'my_custom_rewrite_rule\', 10, 0);
最后,别忘了从仪表板上刷新permalinks结构。