カスタムページテンプレートを作成し、どのページにいるかに応じて抜粋の長さを動的にするようにします。
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)
Functions.phpの中でis_page()
を使うことはうまく、可能で、そしてうまく動いています、そしてあなたがis_page(15)
をエコーして真実になっているならば、それはあなたが15のIDでページにいることを意味します。
問題は、コーデックスからのadd_filter呼び出しの優先順位パラメーターである可能性があります。
優先順位を正しく設定しないと、この関数のデフォルトのWordPressフィルタが最後に実行され、ここで設定した内容が上書きされます。
だからあなたのコードを変更します:
add_filter ( 'excerpt_length', 'custom_excerpt_length',999);
私はurl_to_postid
関数に基づく解決策を見つけました
$url = explode('?', 'http://'.$_SERVER["HTTP_Host"] . $_SERVER["REQUEST_URI"]);
$ID = url_to_postid($url[0]);
これで私はfunctions.php
ファイル内で投稿/ページIDを取得できます。