我创建了一个自定义帖子类型,对于这个自定义帖子类型,我有像这样的sigle页面 http://example.com/?custom_post=titlehere
如何将此url(使用add_rewrite_rule)重写为
之类的链接到目前为止,我有这段代码
function custom_rewrite_basic() {
add_rewrite_rule('^http://[\w.-]+\.example.com?', 'custom_post=$matches[1]', 'top');
}
add_action('init', 'custom_rewrite_basic');
我写的正则表达式错了吗?
答案 0 :(得分:1)
是的,如果您查看This Demo,可以看到//
带有下划线。这是因为它们没有被转义。应该像\/\/
一样选择它们。
以下是您应该使用的RegEx:
^http:\/\/[\w.-]+\.example.com?
此外,我不确定您是否要选择?
,因为目前它会m
com
中的\?
可选,但如果您这样做,则需要将其转义为,^http:\/\/[\w.-]+\.example.com\/\?
。但是,这将选择http://foo.example.com?something,如果您要选择http://foo.example.com/?something,请使用以下RegEx:
$matches[1]
请注意,使用上面指定的任何RegEx可能仍然无效。 function custom_rewrite_basic() {
add_rewrite_rule('^http:\/\/([\w.-]+)\.example.com\/?', 'custom_post=$matches[1]', 'top');
}
add_action('init', 'custom_rewrite_basic');
选择RegEx中的第一个匹配项,但是您没有捕获组。我建议使用以下完整代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://selenium-ide.openqa.org/profiles/test-case">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="selenium.base" href="https://www.gumtree.com/" />
<title>gumtree</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">gumtree</td></tr>
</thead><tbody>
<tr>
<td>open</td>
<td>https://my.gumtree.com/postad</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td> *** what do I put in here to choose "For Sale"? *** </td>
<td></td>
</tr>
<tr>
<td>click</td>
<td> *** what do I put in here to choose "House Clearance"? *** </td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>id=continueButton</td>
<td></td>
</tr>
</tbody></table>
</body>
</html>