web-dev-qa-db-ja.com

get_the_category()は常に空の配列を返します

私の状況を説明させてください、私はメニューを残しました、そして、メニュー名はカテゴリースラッグです。今、私は次と前のメニュー項目を参照する各投稿の下部に次と前のボタンを追加したいと思います。これが私のコードです:

<?php
/**
 * Plugin Name:   Next Previous button bootstrap
 * Description:   Super simple plugin to add next and Previous button
 * Version:       1.0.0
 * Author:        Abdus Sattar Bhuiyan
 * Author URI:   https://www.facebook.com/abdus.s.bhuiyan
 */

$cat = get_the_category($id);
print_r($cat); exit;
$cat = $cat[0];
$menu_slug = strtolower($cat->name);

$menuitems = wp_get_nav_menu_items( $menu_slug, array( 'order' => 'DESC' ) );

 $i=-1;
 foreach ( $menuitems as $item ):
    if($item->url =='#')
      continue;

     $i++;

   $id = get_post_meta( $item->ID, '_menu_item_object_id', true );
   $page = get_page( $id );
   $link = get_page_link( $id );

     $linkarray.=$id.",";
     $urlarray.=$link.",";

   if ($id==$post->ID){
     $previd=$i-1;
     $nextid=$i+1;
   }
 endforeach;

 $linkarray=explode(',',$linkarray);
 $urlarray=explode(',',$urlarray);

 $nextid=$urlarray[$nextid];
 if (empty($nextid)){
     $nextid=$urlarray[0];
 }
 $previd=$urlarray[$previd];
 if (empty($previd)){
     $previd=$urlarray[$i];
 }

 $next_prev_btn = '<a href="<?php echo $nextid; ?>">Next Item</a>';
 $next_prev_btn .= '<a href="<?php echo $previd; ?>">Previous Item</a>';


 add_filter( 'the_content', 'add_next_prev_btn' );

 function add_next_prev_btn( $content ) {
         return $content . $next_prev_btn;
 }

このコードは 'index.php'のようなテンプレートファイルの中に置いている間は動作していますが、同じコードで単純なプラグインを作成すると動作しません。バグを探るために、カテゴリオブジェクトを印刷してみます。空の配列を出力します。私のコードはどうしたのですか。それともテンプレートファイルの代わりにプラグイン内でこのコードを使用することは不可能ですか?御時間ありがとうございます。

あなたのコードはプラグインが最初に開始されたときに実行されます。これは投稿データが設定される前になります。すべてのコードを$cat = get_the_category($id);から関数内のadd_filter...まで(ただし含まないで)移動します。

1
Peter HvD