I am working on my Page not found 404 template. For some reason my conditional doesn’t seem to work right:
What I am trying to achieve is to break down the path and search for each expression.
I remove – and _ from the expression.
$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>";
}
If I type “products_s”
It says:
in Let me help you find what you came here for: Were you looking for
one of the following posts or pages?
Products
So It finds products, which is great.
But if i type in “products_services”
Even though I am expecting to get products and services pages listed as above, it doesn’t finds anything.
What am I missing?
Thanks,
I have never used wordpress but I do notice you change the
queryposts()In the first check you do:
$posts = query_posts('post_type=any&name='.$s); //notice &name=In the second check you do:
$posts = query_posts('post_type=any&s='.$s); // notice &s=It all depends what is happening inside of
queryposts(). Personally I would just pass the string through with ‘_’ ‘-‘ andexplode('-',$string)on the other side to split them into an array.