1

functions.php 内からカスタム関数を呼び出しても機能しないのはなぜですか?

私のカスタム関数:

function get_cat_slug($ID) {
    $post_id = (int) $ID;
    $category = &get_category($post_id);
    echo $category->slug;
}

次のように、すべての投稿をループします。

$args = array(
 'numberposts' => -1
);  
$posts = get_posts($args);
foreach ($posts as $post){
   // and withing this lopp I would like to get a category slug
   // so I am calling my custom function, also included in functions.php
   get_cat_slug($post->ID);

}

しかし、get_cat_slug($post->ID)常に戻りnullます。なんで?私は何が欠けていますか?どんな提案でも大歓迎です。

4

2 に答える 2

2

get_category の前にアンパサンドがあってはなりません。実際には投稿 ID ではなく、カテゴリ IDが必要です。)

get_the_categoryはカテゴリの配列を返します (投稿には複数のカテゴリを含めることができるため)。(int) を指定する必要もありません。最初の猫のナメクジのみをエコーし​​たい場合 (単一の分類を想定して)、次を試してください。

function get_cat_slug($post_id) {
  $cat_id = get_the_category($post_id);
  $category = get_category($cat_id[0]);
  echo $category->slug;
}

ただし、wordpress 関数のスタイルに従って、関数に を付けている場合は、それではなく、テンプレート ループ内で名前を付けるget_...必要があります。return $category->slugechoecho get_cat_slug($post->ID);

ループは、functions.php ではなくテンプレート ファイルに属する WP_Query に依存しています。どのテンプレート ファイルを使用するかは、ループの目的と表示する場所によって異なります。index.php はプライマリ ポスト ループの論理的な選択ですが、archive.php、single.php、または既存のテーマ固有のテンプレートは、作成したカスタムの非標準テンプレートと同様に理にかなっています。

于 2012-09-08T22:27:36.690 に答える
1

あなたのキャストはあるべきかもしれません

$post_id = intval($ID);

参照

すべてのステップを記録しようとしましたか? そのため、どこが間違っているかを正確に確認できます

于 2012-09-08T22:21:28.037 に答える