Hace tiempo leí los 9 consejos de carlosleopoldo.com y estaba pendiente de ganas y tiempo para hacer alguna mejora.
Por fín llegó el día y el mejor sitio para publicar el resultado es este.
He creado una función para colocarla en la página functions.php
y poder llamarla desde cualquier sitio.
Lo normal será incluirla en todas las páginas con “Not Found” y similares.
El código para llamar a la función (por ejemplo en el index.php
del theme) sería
<?php anti404(); ?>
Esto depende de como se llame la función, que se puede cambiar.
Y la función es:
function anti404(){ global $wpdb; $no404=explode(',', preg_replace('/[^a-z]/i',',',$_SERVER['REQUEST_URI'])); $donde=array('post_content','post_title','post_excerpt','post_name'); for ($a=0;$a<count($no404);$a++){ if(strlen($no404[$a])>3){ $quebusco.=$no404[$a].', '; for($b=0;$b<count($donde);$b++){ if($busca==''){$busca= $donde[$b].' LIKE '%'.$no404[$a].'%''; } else{$busca.= ' OR '.$donde[$b].' LIKE '%'.$no404[$a].'%''; } } } } $buscaid = $wpdb->get_results( "SELECT ID FROM $wpdb->posts WHERE ($busca) AND post_type='post' AND post_status='publish' ORDER BY ID DESC LIMIT 5"); if($buscaid): ?> <ul><li><b>Mis sugerencias</b> buscando <i><?php echo $quebusco; ?></i><ul> <?php foreach( $buscaid as $laid ) : $post=get_post($laid->ID); ?> <li><a href="<?php echo get_permalink($laid->ID); ?>"><?php echo $post->post_title; ?></a></li> <?php endforeach; ?> </ul> </li></ul> <?php endif; }
Espero primero que alguien la busque fallos y/o errores, después alguien que la pruebe y sería la leche que encima le gustase a alguno.
zzaludos