web-dev-qa-db-fra.com

Relative au lieu de liens absolus dans les pages?

J'ai mon blog sous blog.mydomain.com. J'utilise des pages pour du contenu statique auquel il faut accéder à partir d'un autre sous-domaine. Donc, careers.mydomain.com affichera le contenu WordPress de blog.mydomain.com/careers.

Mon problème est que tous les liens sur la page font toujours référence à blog.mydomain.com. Existe-t-il un moyen de demander à WordPress d'utiliser des liens relatifs? Ou un moyen de changer le baseURL pour les pages?

1
mrtsherman

Il existe un filtre, post_link, que les permaliens traversent avant d'être renvoyé de get_permalink dans wp-includes/link-template.php. Vous pouvez utiliser ce filtre pour modifier les liens.

Cependant, sachez que rendre tous les permaliens relatifs peut avoir des conséquences inattendues dans certains contextes, par exemple, vous pourriez ne pas vouloir de liens relatifs quand is_feed() == true.

Vous constaterez peut-être que le filtre post_link ne capture pas toutes les URL dont vous avez besoin. Dans ce cas, vous pouvez essayer le filtre home_url qui a un effet beaucoup plus large.

Une autre possibilité (ma préférée) consiste à utiliser la mise en mémoire tampon de sortie pour relativiser les liens. (Exemple en bas.)

Pour plus de sécurité, vous ne pouvez modifier les liens que lorsque cela est nécessaire. Je ne sais pas comment vous obtenez le contenu du blog proprement dit dans le sous-domaine statique, mais si vous utilisez des requêtes HTTP, vous pouvez ajouter un argument de requête: ?rlz et le rechercher ensuite dans votre thème/plug-in.

if ( isset($_GET['rlz']) ) {
    function my_ob_handler($HTML) {
        return str_replace( home_url('/'), '/', $HTML );
    }
    ob_start( 'my_ob_handler' );
}
2
Andy