web-dev-qa-db-fra.com

get_the_category () retourne toujours un tableau vide

Laissez-moi expliquer ma situation, j'ai quitté le menu et le nom du menu est une catégorie limace. Maintenant, je veux ajouter le bouton suivant et précédent au bas de chaque message qui fait référence à l'élément de menu suivant et précédent. voici mon code:

<?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;
 }

Ce code fonctionne tant que je le conserve dans un fichier modèle tel que 'index.php', mais lorsque je crée un plugin simple avec le même code, il ne fonctionne pas. Pour explorer le bogue, j'essaie d'imprimer un objet catégorie. Il imprime un tableau vide. Qu'est-ce qui ne va pas sur mon code? Ou n'est-il pas possible d'utiliser ce code dans un plugin à la place d'un fichier de modèle? Merci pour votre temps.

1

Votre code sera exécuté lors de la première utilisation du plug-in, c'est-à-dire avant que les données post soient configurées. Déplacez tout votre code de $cat = get_the_category($id); jusqu'à (sans inclure) add_filter... dans la fonction.

1
Peter HvD