Utiliser les postmeta


Utiliser la table wp_postmeta

Lors de l’installation de votre wordpress , l’outil créait une base qui se nome wp_postmeta .
L’intérêt principal de cette fonctionnalité est la liaison entre un ID de l’annonce ( index de l’annonce ) , un mot et une valeur.

On peut donc l’utiliser de différente façon .

  • -1- Extraire une liste de billets marqués ( par la valeur )
  • -2- Extraire des paramètres supplémentaire pour ce billet ( par son ID )

Méthode manuelle

L’édition de cette valeur peu se faire depuis l’interface utilisateur :

postmeta , custom fields

Methode en PHP

Nous vous proposons trois fonctions, très pratique, vous permettant de définir ou de relever le contenu de ces champs depuis vos pages .

Ces trois fonctions sont utilisables depuis les pages de votre site ou depuis des Plugin.
Ces deux exemples de code PHP sont membre de la suite de fonctions de notre sur couche
Wordpress-seo depuis la version 1.0.

La table wp_postmeta

meta_id bigint(20) NO PRI NULL auto_increment
post_id bigint(20) NO MUL 0  
meta_key varchar(255) YES MUL NULL  
meta_value longtext YES   NULL  

Si vous êtes da la “Loop” vous pouvez utiliser l’API :
$lu = get_post_meta($post_id, 'valeur', true); ( attention si votre version < 1.5 )

add_post_meta( $post_id, $cle, $valeur);

exemple : $key="mykey"; echo get_post_meta($post->ID, $key, true);

La suite : (en anglais ) : http://codex.wordpress.org/Using_Custom_Fields

Extrait de la suite logiciel Wordpress SEO

Si vous l’utilisez Hors de la Loop :

  1. // ——————————————————-
  2. // Extraire une valeur issus de wp_postmeta par
  3. // L’id de l’annonce et le valeur de la chaine
  4. // ——————————————————-
  5. function GetPostMeta_FromKeyAndPostId($TagKey,$Id,$Max=1)
  6. {
  7.   // Les global issues de wordpress
  8.   global $wpdb,$table_prefix;
  9.   //
  10.  
  11.   // On force le debug
  12.   $Print_debug=0;
  13.    
  14.   $ArrMsgAll=array();
  15.   $ArrMsgCount=0;
  16.   // ———————————-
  17.   // On isole la liste
  18.   $SQL="SELECT meta_id,meta_value FROM `".$table_prefix."postmeta`
    where meta_key=’"
    .$TagKey."’ AND post_id=’".$Id."’ limit ".$Max." " ;
  19.  
  20.  
  21.   $search_counter = 0;
  22.   $A_meta = $wpdb->get_results($SQL);
  23.   if($A_meta)
  24.   {
  25.     return $A_meta[0]->meta_value;
  26.   }
  27.   else
  28.   {
  29.     if($Print_debug==1){echo "<br>DEBUG : <br><p>No results.</p><br>";}  
  30.   }
  31.   return ""; // vide !
  32. }
  33.  
  34. // ——————————————————-
  35. // definit un champ
  36. // ——————————————————-
  37. function SetUserMeta($TagKey="error",$NewVal,$Id=0)
  38. {
  39.   // Les global issues de wordpress
  40.   global $wpdb,$table_prefix;
  41.   //
  42.   // On force le debug
  43.   $Print_debug=0;
  44.  
  45.   $SQL="INSERT INTO `".$table_prefix."postmeta` set meta_key=’".$TagKey."’,
    meta_value=’"
    .addslashes($NewVal)."’ , post_id=’".$Id."’ " ;
  46.   if($Print_debug==1){echo "<br>DEBUG : <br>$SQL<br>";}
  47.  
  48.   $wpdb->get_results($SQL);
  49. }
  50. // ——————————————————-
  51. // Charge une liste d’annonce taggé par une clé
  52. // ——————————————————-
  53. function GetPostListFromWPTag( $TagKey="xxx", $Max=5 ,$Print_debug=0)      
  54. {
  55.   // Les global issues de wordpress
  56.   global $wpdb,$table_prefix;
  57.   //
  58.  
  59.   // On force le debug
  60.   $Print_debug=0;
  61.  
  62.   $ArrMsgAll=array();
  63.   $ArrMsgCount=0;
  64.   // ———————————-
  65.   // On isole la liste
  66.   $SQL="SELECT post_id FROM `".$table_prefix."postmeta`
    where meta_key=’"
    .$TagKey."’ limit ".$Max." " ;
  67.  
  68.   if($Print_debug==1){echo "<br>DEBUG : <br>$SQL<br>";}
  69.  
  70.   $search_counter = 0;
  71.   $A_meta = $wpdb->get_results($SQL);
  72.   if($A_meta)
  73.   {
  74.     foreach($A_meta as $smeta)
  75.     {
  76.       $SQL="SELECT * FROM `".$table_prefix."posts` where ID=".$smeta->post_id." ";
  77.  
  78.       if($Print_debug==1){echo "<br>DEBUG : <br>$SQL<br>";}
  79.  
  80.       $searches = $wpdb->get_results($SQL);
  81.       foreach($searches as $search)
  82.       {
  83.         $ArrMsgAll[]=$search;
  84.         $ArrMsgCount++;
  85.       } //end of foreach loop    
  86.     } //end of foreach loop
  87.   }
  88.   else
  89.   {
  90.     if($Print_debug==1){echo "<br>DEBUG : <br><p>No results.</p><br>";}  
  91.   }
  92.   return $ArrMsgAll;
  93. }



Si vous utilisez ce code sur votre site ou si cette page vous fournies les informations que vous désiriez, aidez nous à nous faire connaître .
La meilleur solution serait de placer notre logo sur votre site.
Le savoir n’est utile que s’il est partagé.
Notre logo que vous pouvez ajouter sur votre site.






Ajoutez votre commentaire

XHTML: Tags autorisé : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>