it-swarm.com.de

Dynamisches Erstellen/Entfernen von Begriffen in der Taxonomie, wenn ein benutzerdefinierter Beitragstyp veröffentlicht/verworfen wird

Ich habe ein bisschen Probleme mit dem Erstellen und Entfernen von Begriffen, basierend darauf, wann ein benutzerdefinierter Beitragstyp veröffentlicht und verworfen wird. Im Idealfall möchte ich einen neuen Begriff in meiner benutzerdefinierten Taxonomie erstellen, wenn ein benutzerdefinierter Beitragstyp veröffentlicht wird. Wenn dieser Beitrag im benutzerdefinierten Beitragstyp verworfen wird, muss ich überprüfen, ob die Anzahl für diesen Begriff 0 beträgt, und in diesem Fall den entsprechenden Begriff automatisch löschen. Folgendes habe ich bisher. Die Erstellungsfunktion funktioniert ordnungsgemäß, aber ich kann die überflüssige Funktion nicht herausfinden. Ihre Expertise wird sehr geschätzt !!

<?php
/**
  * Automatically creates terms in 'custom_taxonomy' when a new post is added to its 'custom_post_type'
  */
function add_cpt_term($post_ID) {
    $post = get_post($post_ID);

    if (!term_exists($post->post_name, 'custom_taxonomy'))
        wp_insert_term($post->post_title, 'custom_taxonomy', array('slug' => $post->post_name));
}
add_action('publish_{custom_post_type}', 'add_cpt_term');
?>

... und jetzt fällt es mir für die Funktion schwer, so zu arbeiten, wie ich es mir wünsche:

/**
  * Automatically removes term in 'custom_taxonomy' when the post of 'custom_post_type' is trashed
  */
function remove_cpt_term($post_ID) {
    $post = get_post($post_ID);
    $term = get_term_by('name', $post->post_name, 'custom_taxonomy', 'ARRAY_A');

    if ($post->post_type == 'custom_post_type' && $term['count'] == 0)
        wp_delete_term($term['term_id'], 'custom_taxonomy');
}
add_action('wp_trash_post', 'remove_cpt_term');
?>
1
kaffolder

Ok, ich denke, ich habe eine tragfähige Lösung gefunden. Ein bisschen enttäuscht, dass ich bisher keine Möglichkeit gefunden habe, mich direkt in trash_{custom_post_type} einzuhängen, wie ich es am publish_{custom_post_type}-Hook konnte. Hier ist eine Lösung für alle, die mit diesem Problem zu kämpfen haben. Wenn jemand bessere Vorschläge hat, zögern Sie nicht, uns diese mitzuteilen!

/**
  * Automatically removes term in 'custom_taxonomy' when the post of 'custom_post_type' is trashed
  */
function remove_cpt_term($post_ID) {
    $post = get_post($post_ID);
    $term = get_term_by('slug', $post->post_name, 'custom_taxonomy');

    // target only our custom post type && if no posts are assigned to the term
    if ('custom_post_type' == $post->post_type && $term->count == 0)
        wp_delete_term($term->term_id, 'custom_taxonomy');
}
add_action('wp_trash_post', 'remove_cpt_term');
3
kaffolder