web-dev-qa-db-fra.com

Modèle de page personnalisé Comment vérifier is_page à partir de functions.php?

Créez un modèle de page personnalisé et essayez de rendre la longueur de l'extrait dynamique en fonction de la page dans laquelle vous vous trouvez.

Fonctions.php

<?php

function custom_excerpt_length($length){
    if (is_page(15)) {
    return 20;
    } else {
    return 150; 
    }
}
add_filter ( 'excerpt_length', 'custom_excerpt_length');

?>

je ne peux pas utiliser is_page pour travailler à partir de fonctions de ma page de modèle personnalisée.

Si je tente echo is_page(15); dans la valeur du modèle personnalisé statique est true .

je suis un peu confus. Est-il possible d'appeler is_page() depuis functions.php (WP 3.1.2)

1
ide79

Utiliser is_page() dans le fichier functions.php est correct, possible et fonctionnel. Si vous répétez is_page(15) et que vous devenez vrai, cela signifie que vous êtes sur une page ayant l’ID 15.

le problème pourrait être le paramètre de priorité de l'appel add_filter, forme le codex:

Assurez-vous de définir la priorité correctement, sinon le filtre WordPress par défaut de cette fonction sera exécuté en dernier et remplacera ce que vous avez défini ici.

alors changez votre code en:

add_filter ( 'excerpt_length', 'custom_excerpt_length',999);
2
Bainternet

J'ai trouvé la solution basée sur la fonction url_to_postid

$url = explode('?', 'http://'.$_SERVER["HTTP_Host"] . $_SERVER["REQUEST_URI"]);
$ID = url_to_postid($url[0]);

Avec cela, je peux obtenir un post/ID de page dans le fichier functions.php.

0
Aleksandr