web-dev-qa-db-ja.com

カスタムページテンプレートどのようにfunctions.phpからis_pageをチェックしますか?

カスタムページテンプレートを作成し、どのページにいるかに応じて抜粋の長さを動的にするようにします。

Functions.php

<?php

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

?>

カスタムテンプレートページの関数からis_pageを動作させることはできません。

私は静的カスタムテンプレートの値でecho is_page(15);を試してみるとtrueです。

私は少し混乱しています。 functions.phpからis_page()を呼び出せるか(WP 3.1.2)

1
ide79

Functions.phpの中でis_page()を使うことはうまく、可能で、そしてうまく動いています、そしてあなたがis_page(15)をエコーし​​て真実になっているならば、それはあなたが15のIDでページにいることを意味します。

問題は、コーデックスからのadd_filter呼び出しの優先順位パラメーターである可能性があります。

優先順位を正しく設定しないと、この関数のデフォルトのWordPressフィルタが最後に実行され、ここで設定した内容が上書きされます。

だからあなたのコードを変更します:

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

私はurl_to_postid関数に基づく解決策を見つけました

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

これで私はfunctions.phpファイル内で投稿/ページIDを取得できます。

0
Aleksandr