web-dev-qa-db-fra.com

Comment puis-je obtenir l'ID du terme de taxonomie à partir de son nom?

La seule fonction de la liste des fonctions taxonomy.module qui semble faire ce que je veux semble être une fonction privée ( _ taxonomy_get_tid_from_term ).

Quelle fonction suis-je censé utiliser si je ne connais que le nom du terme de taxonomie et que je dois trouver son ID?

18
beth

C'est taxonomy_get_term_by_name () que vous utilisez comme dans le code suivant.

$term_array = taxonomy_get_term_by_name('Foo');
$term = reset($term_array); # get the first element of the array which is our term object
print $term->name;
14
Jimajamma

taxonomy_get_term_by_name() fera l'affaire:

$terms = taxonomy_get_term_by_name($row->field_term_name);
if (!empty($terms)) {
  $first_term = array_shift($terms);
  print $first_term->tid;
}
22
Clive

Cette fonction a fonctionné pour moi:

/**
 * Return the term id for a given term name.
 */
function _get_tid_from_term_name($term_name) {
  $vocabulary = 'tags';
  $arr_terms = taxonomy_get_term_by_name($term_name, $vocabulary);
  if (!empty($arr_terms)) {
    $arr_terms = array_values($arr_terms);
    $tid = $arr_terms[0]->tid;
  }
  else {
    $vobj = taxonomy_vocabulary_machine_name_load($vocabulary);
    $term = new stdClass();
    $term->name = $term_name;
    $term->vid = $vobj->vid;
    taxonomy_term_save($term);
    $tid = $term->tid;
  }
  return $tid;
}

Si vous utilisez un autre vocabulaire (différent des balises), modifiez le code au-dessus de la ligne:

$vocabulary = 'tags';
1
dashohoxha