Wordpress API: Ekle / Mesajlar Etiketleri Kaldır

5 Cevap php

Ben basit bir operasyon gibi görünüyor biliyorum, ama ben programlı sonrası kimliğini kullanarak bir etiket eklemek ve kaldırmak için nasıl açıklar herhangi bir kaynak veya belgelerine bulamıyorum.

Aşağıda kullanıyorum ne bir örnek olduğunu, ancak tüm diğer etiketleri üzerine yazmak gibi görünüyor ...

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;
}

5 Cevap

Sen get_object_terms zaten mevcut tüm koşullarını almak için ilk çağrı gerekir.

Updated code

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;
}

wp_add_post_tags($post_id,$tags) kullanmayı deneyin;

İşte bunu nasıl:

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

* Not: wp_set_object_terms () ikinci parametre bir dizi olmasını bekler *.

Ne sonrası id bilmiyorum eğer? Sadece oluşturulan tüm yeni yazılara etiket eklemek istediğiniz?

WordPress API işlevi add_action('publish_post', 'your_wp_function'); kullanırken, otomatik olarak aradığınız işlevi post_id ilk argüman olarak enjekte alır:

function your_wp_function($postid) {
}

Aslında, wp_set_object_terms kendisi tarafından size ihtiyacınız olan her şeyi halledebiliriz:

Eğer gerçekten ayrı bir işlevi ihtiyacınız varsa:

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

wp_set_object_terms 's parametreleri:

  1. Post ID
  2. Accepts...
    • Tek bir dize (örneğin, 'Başar Mesajlar')
    • Mevcut bir etiket tek bir kimlik (örneğin 1), ya da
    • bir dizi ya da (örneğin, array ('Awesome Mesajlar', 1)).
    • Bir OLMAYAN kimliği sağlamak ise NOTE:, bu will otomatik olarak etiketi oluşturun.
  3. Taksonomi (varsayılan etiketleri örneğin, 'post_tag' kullanın).
  4. Whether to...
    • (FALSE) sağlanan olanlarla TÜM mevcut terimleri DEĞİŞTİR, veya
    • (TRUE_) APPEND / mevcut şartları ADD.

Mutlu kodlama!