web-dev-qa-db-fra.com

Pourquoi mes recherches de type de message personnalisé ont-elles cessé de fonctionner après la modification des URL/la mise à jour de WordPress?

MISE À JOUR IMPORTANTE: Je me suis rendu compte que mes problèmes pourraient également résulter de la mise à jour de WordPress 3.3 .


Il y a quelque temps, j'ai posté une solution à ma propre question sur la recherche de types de publications personnalisées.

A cette époque, j'utilisais l'URL http://www.seriouslyfish.com/dev/ lors du réaménagement du site Web.

Maintenant, je suis "passé en direct" et j'ai tout déplacé vers http://www.seriouslyfish.com.

Pour une raison quelconque, cela semble avoir rompu mes recherches de type de publication personnalisée. Si vous essayez de chercher dans " PROFILESEARCH " ou " QUESTIONSEARCH ", vous verrez qu’il est redirigé vers /search/ plutôt que /questions/search ou /species/search.

J'ai un analyseur de réécriture installé, mais je ne pense pas que ce soit le problème, car cette URL semble fonctionner correctement: http://www.seriouslyfish.com/species/search/betta .

Une idée de ce qui pourrait être la cause de cela? Je ne suis pas sûr à 100% que le problème réside dans le changement de l'URL, car aucun code ne doit être modifié.


. htaccess

RewriteEngine On
RewriteCond %{QUERY_STRING} genus=([a-zA-Z0-9-]+)&species=([a-zA-Z0-9-]+)
RewriteRule ^profile.php$ /species/%1-%2? [L,R=301]

RewriteCond %{QUERY_STRING} id=([0-9]*)
RewriteRule ^profile.php$ calc.php?id=%1 [L,R=301]

RewriteRule ^kb.php$ /knowledge-base/ [L,R=301]

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

wp-config.php (ou quelques lignes - aucune autre information relative aux URL n'existe dans le fichier)

define('WP_SITEURL', 'http://www.seriouslyfish.com');
define('WP_HOME', 'http://www.seriouslyfish.com');

les actions du formulaire

RECHERCHE PAR PROFIL

<h1 class="profilesearch">PROFILE<span class="white">SEARCH</span></h1>
<form id="profilesearch" action="<?php echo home_url( '/species/' ); ?>" method="get">
    <input type="text" size="50" class="default-value" value="SEARCH" name="s" />
    <input type="submit" value="GO" class="profilesearch_submit" />
    <label style="width: 180px;">SEARCH FISH SPECIES PROFILES</label>
</form>

QUESTIONSSEARCH

<h1 class="profilesearch">QUESTION<span class="white">SEARCH</span></h1>
<form id="profilesearch" action="<?php echo qa_get_url('archive'); ?>" method="post">
    <input type="hidden" name="type" value="profile" />

    <input type="text" size="50" class="default-value" value="<?php the_search_query(); ?>" name="s" />
    <input type="submit" value="GO" class="profilesearch_submit" />
</form>

GLOSSARYSEARCH

<div class="glossary" href="#">
    GLOSSARY &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong class="dkblue">&#9660;</strong>
    <span>
        <form action="<?php echo home_url( '/glossary/' ); ?>" method="get">
            <p style="font-size:12px;">SEARCH<strong class="dkblue">GLOSSARY</strong></p>
            <input type="text" name="s" value="" />
            <input type="submit" value="GO" class="glossary_submit" />
        </form>
        <div class="glossaryletters">
            <a href="/glossary/a/">A</a>
...
            <a href="/glossary/z/">Z</a>
            <div class="clear"></div>
        </div>
    </span>
</div>

fonction custom_rewrite

/* --- rewrite rules for searches...*/
function custom_rewrite( $wp_rewrite ) {
    $species = array(
        '(species|glossary)/search/(.+?)(/page/([0-9]+))?/?$'      =>  'index.php?post_type='.$wp_rewrite->preg_index(1).'&s='.$wp_rewrite->preg_index(2).'&paged='.$wp_rewrite->preg_index(4)
    );  

    $wp_rewrite->rules = $species + $wp_rewrite->rules;
}
// refresh/flush permalinks in the dashboard if this is changed in any way
add_filter( 'generate_rewrite_rules', 'custom_rewrite' );

Merci d'avance,

5
dunc

Avez-vous essayé d'ajouter EP_PERMALINK en tant que ep_mask (masque de noeud final) sur votre type de message personnalisé arg. Ce paramètre pourrait être utile.

'permalink_epmask' => EP_PERMALINK

J'en ai fait l'expérience une fois et je me suis résolu à re-purger tout le permalien.

Bonne chance.

1
Ivan Slaughter

Après avoir déplacé le site, il est possible que vous n'ayez pas mis à jour la compréhension de WordPress concernant l'emplacement du site. Vous voudrez peut-être essayer d'ajouter ce qui suit dans votre fichier wp-config.php:

define('WP_SITEURL', 'http://www.seriouslyfish.com');
define('WP_HOME', 'http://www.seriouslyfish.com');

Cela remplacera les paramètres de la base de données. WordPress utilise les paramètres d'emplacement pour diriger le trafic de réécriture, ce qui pourrait résoudre le problème. Je suppose que c'est parce que vous dites que les choses fonctionnaient correctement avant de déplacer le site.

Peut-être serait-il judicieux d'essayer de revérifier votre fichier .htaccess également? Peut-être que quelque chose y est redirigé de manière inappropriée?

Il peut également être judicieux de vérifier l’URL action du formulaire. Est-ce que cela est généré par un plugin, WordPress proprement dit, ou par autre chose? Si c'est sous votre contrôle et que vous pouvez le réécrire d'une manière ou d'une autre, vous n'avez peut-être pas besoin de la redirection manuelle utilisée dans la réponse à laquelle vous associez en haut de votre question?

Désolé si je saisis bien ce qui se passe ici, mais il est difficile de résoudre ce problème sans pouvoir piquer le code et voir ce qui se passe.

1
Gavin Anderegg

Vérifiez vos codes de création de types de post, parfois les gens utilisent l'ancien code et WordPress a changé depuis. Peu importe ce que vous utilisez pour la recherche, vos types de publication doivent permettre les éléments suivants:

'exclude_from_search'=> false
'publicly_queryable'=> true
'has_archive'=> true 

Après la recherche, je trouve cette approche intéressante: http://dbaines.com/blog/archive/wordpress-custom-post-type-multiple-search/

0
Diana