web-dev-qa-db-fra.com

Comment puis-je stocker l'ID de page dans un message au lieu d'un autre permalien sélectionné?

Nous utilisons Wordpress comme base de connaissances. Nous venons de quitter mediawiki et jekyll pour les pages Github et réduisions le nombre de systèmes différents de quatre à un seul. Une installation Wordpress pour les blogs et trois bases de connaissances pour trois produits différents. L'avantage est que les éditeurs ne doivent maîtriser qu'un système au lieu de trois.

Nous avons défini les permaliens sur /% postname% /, ce qui rend Nice et les liens logiques logiques. Dans la plupart des pages, nous ajoutons des liens vers d'autres pages de la base de connaissances à l'aide de l'éditeur. Dans la fenêtre contextuelle, nous sélectionnons la page vers laquelle créer un lien. Le permalien est ajouté à la page. Comme nous travaillons constamment sur la base de connaissances, il se peut que le postname change. Cela entraînera une erreur 404 sur une page de la base de connaissances internel qui renvoie au message modifié.

Par conséquent, j'aimerais ajouter un identifiant de page (? P = 123) à la place du nom de la publication. Lorsque le lien est cliqué sur le front-end, Wordpress semble assez intelligent pour réécrire l'id de la page sur le /% postname%/Advantage, c'est que je n'ai pas à changer les liens de chaque page. (ou cela peut-il être fait aussi automatiquement?)

6
hans2103

Ajoutez cela à votre functions.php:

function wp_link_query_mod ( $results ){
    if( count( $results ) ){
        for( $i=0; $i<count($results); $i++ ){
            $results[$i]['permalink'] = wp_get_shortlink( $results[$i]['ID'] );
        }
    }
    return $results;
}
add_filter('wp_link_query', 'wp_link_query_mod');

Ce hook n'est utilisable qu'à partir de WP 3.7. Si vous disposez d'une version antérieure, il existe une alternative, mais cela impliquerait de modifier une ligne dans les fichiers WP core.

6
Katrina