自定义固定链接不起作用,显示404页没有错误

时间:2018-10-11 作者:Ash

我已经创建了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”。tour1 我已经在函数中完成了上述代码。主题的php文件。我查过了。htaccess,这是正确的。

我想问题在于add\\u permastruct或m\'I在代码中遗漏了任何内容。

2 个回复
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结构。

SO网友:user66981

我只是修改{4}=>+号

我的所有岗位都正常工作。

{4} 意味着它只需要4位数的tourid

其余代码相同。

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%\', \'([^/]+)\', \'tourid=\');
  $wp_rewrite->add_permastruct(\'tour\', \'/tour/%pstname%/%tourid%\', array( \'walk_dirs\' => false ));
}

结束

相关推荐

Let me choose permalinks

我需要选择一个叫做“mysite”的永久链接。com/1418”,但wordpress不断在永久链接中添加“-2”。通常这意味着我已经有了一个名为“相同”的页面,它位于垃圾箱或其他地方。但这里的情况似乎并非如此。我尝试在设置中重置永久链接,这也没有帮助。我如何使用数字作为页面名称permalink,而不用wordpress在permalink中添加“-2”。