我正在使用我的网页找不到404模板。出于某种原因,我的条件似乎不正常:
我想要实现的是打破路径并搜索每个表达式。 我从表达式中删除了 - 和_。
$s = preg_replace("/(.*)-(html|htm|php|asp|aspx)$/","$1",$wp_query->query_vars['name']);
$posts = query_posts('post_type=any&name='.$s);
$s = str_replace("-"," ",$s);
$s = str_replace("_"," ",$s);
if (count($posts) == 0) {
$posts = query_posts('post_type=any&s='.$s);
}
if (count($posts) > 0) {
echo "<ol><li>";
echo "<p>Were you looking for <strong>one of the following</strong> posts or pages?</p>";
echo "<ul>";
foreach ($posts as $post) {
echo '<li><a href="'.get_permalink($post->ID).'">'.$post->post_title.'</a></li>';
}
echo "</ul>";
}
如果我输入“products_s”
它说:
让我帮你找到你来这里的:你在寻找吗? 以下帖子或页面之一? 的产品
所以它找到了很棒的产品。
但如果我输入“products_services”
即使我希望获得上面列出的产品和服务页面,它也找不到任何东西。
我错过了什么?
谢谢,
答案 0 :(得分:0)
我从未使用过wordpress,但我注意到你更改了queryposts()
在第一次检查中,您执行以下操作:
$posts = query_posts('post_type=any&name='.$s); //notice &name=
在第二次检查中,您执行以下操作:
$posts = query_posts('post_type=any&s='.$s); // notice &s=
这完全取决于queryposts()
内发生的事情。就个人而言,我只是将字符串传递给另一边的'_'' - '和explode('-',$string)
,将它们分成一个数组。
答案 1 :(得分:0)
它不适合你的原因是因为Wordpress的搜索仅返回符合查询中所有单词的帖子。因此,“products_s”变成“产品”,“产品”和“s”都在产品中。所以产品会被退回。 “products_ducts”将返回相同的页面。
如果您有一个名为“产品和服务”的页面,则会在第二次搜索时获得结果。
也许您可以在空格处拆分字符串并搜索每个单词并将结果相互追加。