IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WordPress PHP Discussion :

Breadcrumb NavXT : lien vers une page plutôt que la catégorie


Sujet :

WordPress PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de StephBretagne
    Femme Profil pro
    Inscrit en
    Mars 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 147
    Par défaut Breadcrumb NavXT : lien vers une page plutôt que la catégorie
    Bonjour à toutes et tous,

    Cela fait un bon moment que je n'ai pas codé et j'ai manifestement oublié beaucoup de choses

    1. Le site sur lequel je travaille bénévolement est en wordpress.
    Pour que les liens du fil d'Ariane redirigent vers des pages et non les "pages archives des catégories" j'ai le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    add_filter('bcn_breadcrumb_url', 'my_breadcrumb_url_changer', 3, 10);
    function my_breadcrumb_url_changer($url, $type, $id) {
     
    /*actualités */
        if(in_array('category', $type) && (int) $id === 72) {
            $url = get_permalink(1165);
        }
        return $url;    
     
    /*actions ! */
        elseif(in_array('category', $type) && (int) $id === 35) {
            $url = get_permalink(1131);
        }
        return $url;    
     
        /*nos actions */
        elseif(in_array('category', $type) && (int) $id === 70) {
            $url = get_permalink(1133);
        }
        return $url;    
     
    /*santé au travail */
        else(in_array('category', $type) && (int) $id === 14) {
            $url = get_permalink(1142);
        }
        return $url;
    }    //fin function my_breadcrumb_url_changer
    Il doit y avoir une erreur d'accolade quelque part car cela fait tout sauter...
    -
    2. D'autre part, le site possède 5 catégories, 19 sous-catégories et 6 sous-sous-catégories. Peut-être vaudrait-il mieux utiliser des switch mais je ne sais plus comment faire ...


    Merci d'avance pour toute l'aide que vous voudrez bien m'apporter !!!

  2. #2
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    1 - Tu ne crois pas que c'est trop demander aux autres de chercher tes erreurs de syntaxe ?
    2 - La doc php sur switch est faite pour ça. http://php.net/manual/fr/control-structures.switch.php

  3. #3
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Bonsoir.
    Si tu fais un système conditionnel, tu ne dois rien mettre entre 2 conditions.
    Ton code devient donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    add_filter('bcn_breadcrumb_url', 'my_breadcrumb_url_changer', 3, 10);
    function my_breadcrumb_url_changer($url, $type, $id) {
      /*actualités */
      if(in_array('category', $type) && (int) $id === 72) {
          $url = get_permalink(1165);
      }  
      /*actions ! */
      elseif(in_array('category', $type) && (int) $id === 35) {
          $url = get_permalink(1131);
      }
      /*nos actions */
      elseif(in_array('category', $type) && (int) $id === 70) {
        $url = get_permalink(1133);
      }   
      /*santé au travail */
      else(in_array('category', $type) && (int) $id === 14) {
         $url = get_permalink(1142);
      }
      return $url;
    }    //fin function my_breadcrumb_url_changer
    D'autre part, le site possède 5 catégories, 19 sous-catégories et 6 sous-sous-catégories.
    Tu as une base de données ?
    Le plus logique serait de ranger ton arborescence dans une base de données avec ce genre de table :
    arbo(id, libelle, parent_id)


    1 "Animaux" NULL
    2 "Mammifères" 1
    3 "Poissons" 1
    4 "Oiseaux" 1
    5 "Chiens" 2
    6 "Chats" 2
    7 "Requins" 3
    8 "Pies" 4
    9 "Moineaux" 4
    10 "Végétaux" NULL

    etc. etc...

    Ou au pire, tu mets ça dans un tableau associatif PHP...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    function return_perm($id){
      $categories=array();
      $categories[0]['libelle']='Animaux';
      $categories[0]['permalink']=5441;
      $categories[0]['parent_id']=-1;
      $categories[1]['libelle']='Mammifères';
      $categories[1]['permalink']=335;
      $categories[1]['parent_id']=0;
      $categories[2]['libelle']='Chats';
      $categories[2]['permalink']=2254;
      $categories[2]['parent_id']=1;
      //etc... etc...
     
      foreach($categories as $index=>$cat){
        if($index==$id){
          return get_permalink($cat['permalink']);
        }
      }
      return false;
    }
     
    $permalink=return_perm(2);
    if($permalink!==false){
      //on traite...
    }
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  4. #4
    Membre confirmé Avatar de StephBretagne
    Femme Profil pro
    Inscrit en
    Mars 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 147
    Par défaut
    Bonjour Dendrite et merci beaucoup pour ta réponse !!!

    Je me suis précipitée pour mettre en œuvre ta première proposition mais elle provoque la même page blanche que la mienne...

    Donc, j'ai essayé l'autre avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    add_filter('bcn_breadcrumb_url', 'return_perm', 3, 10);
    function return_perm($id){
      $categories=array();
      $categories[59]['libelle']='Carrières';
      $categories[59]['permalink']=1186;
      $categories[59]['parent_id']=-1;
      $categories[61]['libelle']='Avancement';
      $categories[61]['permalink']=1114;
      $categories[61]['parent_id']=59;
      $categories[62]['libelle']='Echelons';
      $categories[62]['permalink']=1305;
      $categories[62]['parent_id']=61;
      //etc... etc...
     
      foreach($categories as $index=>$cat){
        if($index==$id){
          return get_permalink($cat['permalink']);
        }
      }
      return false;
    }
     
    $permalink=return_perm(2);
    if($permalink!==false){
      echo "je teste";
    }
    plus de page blanche mais ça n'a pas l'effet escompté.

    Il y a quelque chose que j'ai oublié de préciser : quand je mets seulement une condition comme ci-dessous, cela fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    add_filter('bcn_breadcrumb_url', 'my_breadcrumb_url_changer', 3, 10);
    function my_breadcrumb_url_changer($url, $type, $id) {
     
    /*actualités */
        if(in_array('category', $type) && (int) $id === 72) {
            $url = get_permalink(1165);
        }
        return $url;    
    } //fin function my_breadcrumb_url_changer

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    add_filter('bcn_breadcrumb_url', 'my_breadcrumb_url_changer', 3, 10);
     
    function my_breadcrumb_url_changer($url, $type, $id) 
    {
    	$url = '';
    	$link_by_id = [
    		72 => 1165,	// actualités
    		35 => 1131, 	// actions
    		70 => 1133,	// nos actions
    		14 => 1142,	// santé au travail
    		];
     
        if(in_array('category', $type) && in_array($id, $link_by_id) ) {
            $url = get_permalink( $link_by_id[$id] );
        }
        return $url;    
    }

    N.B. Je pense que Dendrite n'a pas vu que tu parlais de WordPress...

  6. #6
    Membre confirmé Avatar de StephBretagne
    Femme Profil pro
    Inscrit en
    Mars 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 147
    Par défaut
    Bonjour jreaux62,

    Merci beaucoup pour ta réponse et pour avoir déplacé mon sujet.

    J'adore ton code parce qu'il est super clair !!! Malheureusement, il provoque la même page blanche que les autres

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par StephBretagne Voir le message
    ...quand je mets seulement une condition comme ci-dessous, cela fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    add_filter('bcn_breadcrumb_url', 'my_breadcrumb_url_changer', 3, 10);
    function my_breadcrumb_url_changer($url, $type, $id) {
     
    /*actualités */
        if(in_array('category', $type) && (int) $id === 72) {
            $url = get_permalink(1165);
        }
        return $url;    
    } //fin function my_breadcrumb_url_changer
    Si tu dis que le code ci-dessus fonctionne, alors celui-là devrait fonctionner aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    add_filter('bcn_breadcrumb_url', 'my_breadcrumb_url_changer', 3, 10);
    function my_breadcrumb_url_changer($url, $type, $id)
    {
    	$id = intval($id);
    	$link_by_id = array(
    		72 => 1165,	// actualités
    		35 => 1131,	// actions
    		70 => 1133,	// nos actions
    		14 => 1142	// santé au travail
    		);
        if( in_array('category', $type) && !empty($link_by_id[$id]) )
        {
            $url = get_permalink( $link_by_id[$id] );
        }
        return $url;
    }

  8. #8
    Membre confirmé Avatar de StephBretagne
    Femme Profil pro
    Inscrit en
    Mars 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 147
    Par défaut
    Ça marche, c'est génial !!!!!!!!!!!!!!!!!

    Je ne sais pas comment te remercier, vraiment, du fond du cœur !

    Je marque le problème comme résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème de syntaxe pour une fonction
    Par gero123 dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 27/07/2007, 12h11
  2. erreur syntaxe sur une fonction pow
    Par superyoury dans le forum C
    Réponses: 3
    Dernier message: 10/06/2007, 18h16
  3. Syntaxe d'une fonction
    Par Goupo dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 01/06/2007, 18h18
  4. [SQLITE][UDF] syntaxe d'une fonction
    Par nannous dans le forum Bibliothèques
    Réponses: 3
    Dernier message: 31/10/2006, 13h56
  5. syntaxe d'une fonction
    Par john491 dans le forum Général Python
    Réponses: 2
    Dernier message: 01/05/2006, 23h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo