好的,我已经得到了所有3种类型请求的工作示例。为了让它们工作起来,需要大量的实验和胡闹。我想米洛很擅长说服人们回答他们自己的问题。
在无数次更改和刷新永久链接后,我意识到在add\\u rewrite\\u url之外找出url要容易得多,一旦它们工作了,就可以定义重写。示例为index.php?param=foo&post_type=example_type
.
另一件显而易见的事情是,在这里添加它,这样可能会帮助其他人。在定义页面/子页面通配符规则之前,必须定义自定义帖子类型add\\U rewrite\\U规则规则。我在这件事上浪费了不少时间,认为这是导致我不理解规则为什么不起作用的主要原因。
以下是适用于我所有需求的3条规则。页面/子页面规则被合并为一个规则。
// Custom Post Archive
add_rewrite_rule(
\'^foo/example_type/?$\',
\'index.php?param=foo&post_type=example_type\',
\'top\'
);
// Custom Post Individual
add_rewrite_rule(
\'^foo/example_type/([^/]*)/?$\',
\'index.php?param=foo&example_type=$matches[1]\',
\'top\'
);
// Pages, Top-Level and Sub-Pages
// This MUST be placed in the code AFTER custom post add_rewrite_rule
add_rewrite_rule(
\'^foo/(.+)/?$\',
\'index.php?param=foo&pagename=$matches[1]\',
\'top\'
);
此外,我所做的是设置一个循环来添加多个自定义帖子类型规则。请记住,在定义页面/子页面通配符规则之前,必须先定义自定义帖子类型add\\U rewrite\\U规则规则。
$custom_types = array(\'example_type\', \'projects\', \'people\');
foreach($custom_types as $type) {
// Custom Post Archive
add_rewrite_rule(
\'^foo/\'.$type.\'/?$\',
\'index.php?param=foo&post_type=\'.$type,
\'top\'
);
// Custom Post Individual
add_rewrite_rule(
\'^foo/\'.$type.\'/([^/]*)/?$\',
\'index.php?param=foo&\'.$type.\'=$matches[1]\',
\'top\'
);
}
The
Rewrite Analyzer 当Milo试图更好地理解Wordpress如何查询页面/帖子时,他传递的信息非常有用。