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 :

wp_set_object_terms et tag collé ?


Sujet :

WordPress PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 138
    Par défaut wp_set_object_terms et tag collé ?
    Bonjour,

    J'ai beau faire des essais j'ai un soucis d'insertion de tag automatique sous WP.

    En effet : j'appelle la fonction wp_set_object_terms avec des tags dans un array séparé par une virgule. Mais wordpress considère que c'est un seul tag.... Le post se retrouve avec un seul tag qui est la somme des différents tags du array (tag1-tag2-tag3...)

    J'ai cru à un problème de charset.
    - J'ai essayé avec ou sans espace entre les tags et en remplaçant la virgule par le code ‚ sans succès.
    - J'ai aussi essayé de récupèrer les tags pour les traiter un à un dans un deuxieme boucle foreach mais je n'ai pas réussi .

    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
    $tablo_tags = array(
    "mot cle 1" => "tag1,tag11",
    "mot cle 2" => "tag2, tag22",	
    ); 
     
     
    foreach($tablo_tags as $motcle => $tags) {
     
         if (preg_match('/'.$motcle.'/i', $texte)) {
     
    	$term_taxonomy_ids =	  wp_set_object_terms( $post_ID, $tags, 'post_tag', false );
     
    		  if ( is_wp_error( $term_taxonomy_ids ) ) {
    	// There was an error somewhere and the terms couldn't be set.
    } else {
    	// Success! The post's categories were set.
    }
    		 //  break;
    	     }
    }
    Avez vous une idée ou une modif de code à me proposer ?

    Merci

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 667
    Par défaut
    d'après la documentation, il est possible d'utiliser un tableau PHP :
    https://codex.wordpress.org/Function...t_object_terms

    comme cela par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wp_set_object_terms($post_ID, ["tag1", "tag2", "tag3"], 'post_tag', false );

  3. #3
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 138
    Par défaut
    Désolé pour le retard la notification de réponse n'a pas marchée.

    Je te remercie pour ta réponse. J'y avais pensé mais j'ai déja plus de 100 mots clés rentrés de cette manière : "mot cle 1" => "tag1,tag11", "mot cle 2" => "tag2, tag22",

    Cela voudrait dire que je suis obligé de tout retaper ? A moins que je n'ai pas saisi une possibilité php de le faire ?

  4. #4
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 138
    Par défaut
    En fait ce n'est pas cela qui merde. Les articles sont écrits et les tags séparés uns à uns dans la révision.

    quand je valide l'article manuellement, on voit les tags séparés dans le brouillon et il sont séparés quand ils sont postés.

    Mais quand je valide automatiquement avec ce code dans un fichier cron. Cela me colle les tags enregistrés dans l'article "tag1,tag11" sans tenir compte de la séparation de la virgule. C'est comme si c'est un seul tag.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // Update post
      $my_post = array(
          'ID'           => $id,
          'post_status' => publish,
      );
     
    // Update the post into the database
      wp_update_post( $my_post );
    Si ensuite je vais sur l'article fautif et que je le met simplement à jour en cliquant sur le bouton "mettre à jour", les tags se séparent.

    Je ne comprends pas. On dirait que ce n'est pas la meme commande dans le cron ou bien j'oublie des choses.

  5. #5
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 667
    Par défaut
    quand on enregistre un article à partir de l'espace d'administration, c'est la fonction "wp_set_post_terms" qui est utilisée et qui accepte une chaine de caractère avec des virgules en paramètres :
    https://codex.wordpress.org/Function...set_post_terms


    pour les articles déjà postés, vous pouvez développer une boucle qui cherche toutes les valeurs qui contiennent "," et les modifier
    pour faire cela vous pouvez utiliser les fonctions "get_posts" et "get_the_terms"

  6. #6
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 138
    Par défaut
    Merci pour ton aide.

    Pour les nouveaux articles
    Penses tu que ce code là pourrait fonctionner ? Cela modifierai le status de l'article et permettrait de rentrer les tags en tenant compte des virgules de l'article déja en brouillon ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // Update post
      $my_post = array(
          'ID'           => $id,
          'post_status' => publish,
      );
     
    // Update the post into the database
    wp_set_post_terms( $my_post );
    Pour les articles déja postés

    Un simple update suffit il ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // Update post
      $my_post = array(
          'ID'           => $id,
      );
     
    // Update the post into the database
    wp_set_post_terms( $my_post );

Discussions similaires

  1. Extraire les infos d'un tag ID3
    Par patkiller dans le forum Langages de programmation
    Réponses: 12
    Dernier message: 22/02/2025, 00h24
  2. Recupere les tag d'entete d'un fichier mp3
    Par kirbs dans le forum C++Builder
    Réponses: 7
    Dernier message: 05/10/2006, 17h40
  3. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  4. [IMPORTANT] Aidez vous des [Tag's]
    Par NoisetteProd dans le forum Bases de données
    Réponses: 1
    Dernier message: 12/02/2005, 15h23

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