web-dev-qa-db-de.com

Kategorie in Beitragstyp dynamisch hinzufügen

ich habe den Code, der einen Beitrag in einem benutzerdefinierten Beitragstyp hinzufügen kann, aber das Hinzufügen der Kategorie funktioniert nicht.

$args = array(
    'post_title' => $title ,
    'post_status'   => 'publish',
    'post_type' => 'mypost' 
);

$post_id = wp_insert_post($args);

$category_ids = array(38,39);
wp_set_post_categories( $post_id, $category_ids, 'category');
1
Nikko Dela Cruz

Sie müssen den benutzerdefinierten Beitragstyp mit Unterstützung für die Taxonomie category registrieren:

add_action('init', 'cyb_register_post_type');
function cyb_register_post_type() {
    $args = array(
        // All the other args
        'taxonomies'          => array( 'category' ),
    );

    register_post_type( 'my_post_type', $args );
}

Anschließend können Sie wie zuvor Beziehungen zwischen dem benutzerdefinierten Beitragstyp und der Taxonomie categoy festlegen, müssen aber den Code korrigieren.

Davon:

wp_set_post_categories( $post_id, $category_ids, 'category');

Dazu (vorherige Kategorien werden gelöscht und durch die neuen Kategorien ersetzt):

wp_set_post_categories( $post_id, $category_ids );
// The above line is equivalent to
// wp_set_post_categories( $post_id, $category_ids, false );
// or
// wp_set_post_terms( $post_id, $category_ids, 'category', false );

Oder an (vorherige Kategorien werden nicht gelöscht, neue Kategorien werden angehängt):

wp_set_post_categories( $post_id, $category_ids, true );

Sie können auch eine benutzerdefinierte Taxonomie registrieren und für Ihren benutzerdefinierten Beitragstyp verwenden:

add_action('init', 'cyb_register_post_type_and_taxonomy');
function cyb_register_post_type_and_taxonomy() {

    $post_type_args = array(
        // All the other args
        'taxonomies'          => array( 'my_custom_taxonomy' ),
    );

    register_post_type( 'my_post_type', $post_type_args );

    $taxonomy_args = array(
          // Arguments for the custom taxonomy
          // See https://developer.wordpress.org/reference/functions/register_taxonomy/
    );

    register_taxonomy( 'my_custom_taxonomy', 'my_post_type', $args );

}

Und dann benutze wp_set_post_terms(), nicht wp_set_post_categories():

wp_set_post_terms( $post_id, $category_ids, 'my_custom_taxonomy');
1
cybmeta

Da Sie dies für den benutzerdefinierten Beitragstyp tun, müssen Sie die Taxonomie verwenden. Ich werde Ihnen vorschlagen, <?php wp_set_post_terms( $post_id, $terms, $taxonomy, $append ) ?> zu verwenden. Informationen zur detaillierten Verwendung der Funktion finden Sie unter diesem Link .

0
Parth Patel