web-dev-qa-db-fra.com

Modification du lien de commentaires généré par les fonctions get_comments_link () et get_comments_pagenum_link ()

Actuellement, mon thème fait appel à get_comments_link() pour créer l'ancre standard # comments afin de créer un lien vers les commentaires sous la publication, comme le fait la fonction get_comments_pagenum_link() sur les commentaires paginés.

Je voudrais remplacer l'ancre # comments dans ces fonctions par une autre chaîne, sans bien sûr modifier les fichiers php de base de WP.

Un simple add_filter pour remplacer complètement les fonctions de base (autres que dans pluggable.php) ne semble pas être possible. Existe-t-il d’autres moyens d’apporter ce petit changement à la sortie d’une fonction principale, qui utilise PHP (plutôt que de dire Java)? Est-il possible d'utiliser un add_filter avec str_replace() peut-être?

Cela sera utile pour les sites en langue étrangère et pour rediriger les commentaires vers une autre page avec une demande d'URL, par exemple.

1
maduroblanco

La solution à la fonction get_comments_pagenum_link() est donc assez simple:

add_filter('get_comments_pagenum_link' , 'new_get_comments_pagenum_link');
function new_get_comments_pagenum_link($content) {
    $content = str_ireplace('#comments' , '#other', $content);
    return $content;
}

Quels filtres la sortie de get_comments_pagenum_link() pour remplacer # content par # other , ou toute autre chaîne que vous pourriez choisir.

Pour la fonction get_comments_link(), qui ne peut pas être filtrée, j'ai simplement découvert que mon thème WordPress l'utilisait déjà dans sa propre fonction de lien de commentaires et j'ai donc filtré cette fonction de thème à l'aide de la même méthode que celle présentée ci-dessus.

2
maduroblanco

Pour la fonction get_comments_link(), aucun filtre de ce type n'existe. Vous voudrez peut-être utiliser une fonction alternative appelée get_comment_link() qui possède un filtre: get_comment_link.

Pour la fonction get_comments_pagenum_link(), il existe un filtre: get_comments_pagenum_link.

Pour en savoir plus sur le fonctionnement des filtres, veuillez consulter API de plug-in (Wordpress Codex) . Les informations qui y figurent devraient répondre à toutes les questions sur l'utilisation de add_filter().

Comme le lien est une chaîne en PHP, vous pouvez utiliser n’importe laquelle des fonctions de chaîne PHP pour localiser, extraire et remplacer des éléments. Liste complète de PHP Fonctions sur les chaînes (Manuel PHP) .

1
hakre