2010-03-12 24 views
12

Sé que parece una operación simple, pero no puedo encontrar ningún recurso o documentación que explique cómo agregar y quitar etiquetas mediante programación a una publicación usando la ID de la publicación.Wordpress API: Agregar/Quitar Etiquetas en Publicaciones

A continuación se muestra un ejemplo de lo que estoy usando, pero parece que para sobrescribir todos los demás etiquetas ...

function addTerm($id, $tax, $term) { 

    $term_id = is_term($term); 
    $term_id = intval($term_id); 
    if (!$term_id) { 
     $term_id = wp_insert_term($term, $tax); 
     $term_id = $term_id['term_id']; 
     $term_id = intval($term_id); 
    } 
    $result = wp_set_object_terms($id, array($term_id), $tax, FALSE); 

    return $result; 
} 

Respuesta

5

primero necesita llamar get_object_terms para obtener todos los términos que ya existen.

código actualizado

function addTerm($id, $tax, $term) { 

    $term_id = is_term($term); 
    $term_id = intval($term_id); 
    if (!$term_id) { 
     $term_id = wp_insert_term($term, $tax); 
     $term_id = $term_id['term_id']; 
     $term_id = intval($term_id); 
    } 

    // get the list of terms already on this object: 
    $terms = wp_get_object_terms($id, $tax) 
    $terms[] = $term_id; 

    $result = wp_set_object_terms($id, $terms, $tax, FALSE); 

    return $result; 
} 
+0

FYI: is_term se ha cambiado a term_exists – Brad

+3

¿Dónde está la parte de "eliminar etiqueta" de esto? –

+0

Consulte http://wordpress.stackexchange.com/a/49256/9142 para ver cómo eliminé las etiquetas. –

4

Trate de usar wp_add_post_tags($post_id,$tags);

2

Aquí es cómo lo hago:

$tag="This is the tag" 
$PostId=1; // 
wp_set_object_terms($PostId, array($tag), 'post_tag', true); 

Nota: wp_set_object_terms() espera que el segundo parámetro a ser una matriz.

1

¿Qué sucede si no conoce la identificación postal? ¿Solo quiere agregar la etiqueta a todas las publicaciones nuevas creadas?

Cuando se utiliza la función API de WordPress add_action('publish_post', 'your_wp_function');, la función a la que llama automáticamente obtiene la post_id inyecta como primer argumento:

function your_wp_function($postid) { 
} 
1

En realidad, wp_set_object_terms puede manejar todo lo que necesita por sí mismo:

Si realmente necesita una función separada:

function addTag($post_id, $term, $tax='post_tag') { 
    return wp_set_object_terms($post_id, $term, $tax, TRUE); 
} 

wp_set_object_terms 's parámetros:

  1. el ID del anuncio
  2. Acepta ...
    • una sola cadena (por ejemplo, 'Publicaciones impresionantes')
    • una sola ID de una etiqueta existente (por ejemplo, 1) o
    • una matriz de cualquiera (por ejemplo, matriz ('Publicaciones impresionantes', 1)).
    • NOTA: Si proporciona un NON-ID, creará la etiqueta automáticamente.
  3. La taxonomía (por ejemplo, para las etiquetas predeterminadas, use 'post_tag').
  4. Ya sea para ...
    • (FALSE) Reemplazar todas las condiciones existentes con los proporcionados, o
    • (TRUE_) anexar/añadir a los términos existentes.

de codificación feliz!

Cuestiones relacionadas