webentwicklung-frage-antwort-db.com.de

Benutzerdefinierte Seitenvorlage Wie überprüfe ich is_page von functions.php?

Erstellen Sie eine benutzerdefinierte Seitenvorlage, und versuchen Sie, die Länge des Ausschnitts abhängig von der Seite, auf der Sie sich befinden, dynamisch zu gestalten.

Funktionen.php

<?php

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

?>

ich kann is_page nicht von Funktionen in meiner benutzerdefinierten Vorlagenseite abrufen.

Wenn ich echo is_page(15); in der statischen benutzerdefinierten Vorlage probiere, ist der Wert true .

ich bin ein bisschen verwirrt. Ist es möglich, is_page() von functions.php (WP 3.1.2) aufzurufen?

1
ide79

Die Verwendung von is_page() in functions.php ist in Ordnung, möglich und funktioniert. Wenn Sie is_page(15) wiederholen und wahr werden, bedeutet dies, dass Sie sich auf einer Seite mit der ID 15 befinden.

das Problem könnte der Prioritätsparameter des Aufrufs add_filter sein, bilden Sie den Codex:

Stellen Sie sicher, dass die Priorität richtig eingestellt ist. Andernfalls wird der Standard-WordPress-Filter für diese Funktion zuletzt ausgeführt und überschreibt die hier festgelegten Einstellungen.

also ändere deinen Code auf:

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

Ich habe eine Lösung gefunden, die auf der Funktion url_to_postid basiert

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

Hiermit kann ich eine Beitrags-/Seiten-ID in der functions.php-Datei erhalten.

0
Aleksandr