webentwicklung-frage-antwort-db.com.de

Festlegen der Standardkategorie für den benutzerdefinierten Beitragstyp beim automatischen Speichern

Ich habe ein paar Stunden gesucht und mehrere Posts konsultiert, aber es scheint, als würde dies funktionieren.

Ich habe diesen seltsamen Fehler, bei dem Benutzer ihre Entwürfe eines benutzerdefinierten Beitragstyps nicht sehen können, wenn sie ihnen keine Kategorie zuweisen. Wenn sie also einfach auf "Als Entwurf speichern" klicken und später darauf zurückgreifen möchten, ist dies für sie nicht sichtbar (ich muss mich als Administrator anmelden und eine Kategorie festlegen, damit es für sie sichtbar ist). Ich habe keine Ahnung, warum dies geschieht, aber ich bin bereit, es zu umgehen.

In Einstellungen > Schreiben können Sie die Standardkategorie für einen regulären Beitrag festlegen. Für einen benutzerdefinierten Beitragstyp ist diese Option jedoch nicht verfügbar. Es ist in Ordnung, den Standardtyp auf "Nicht kategorisiert" zu setzen, genau wie dies bei normalen Posts der Fall ist. Also versuche ich das zu erreichen.

Einige Snippets wie this sind für die Standardkategorie beim Veröffentlichen vorgesehen, ich benötige sie jedoch beim automatischen Speichern (einige Benutzer haben nur Zugriff auf "Entwurf speichern" und "Zum Veröffentlichen einreichen"). Mindestens 6, auf die ich gestoßen bin, sind unbeantwortet.

Ich habe einen bestimmten Code nicht erfolgreich implementiert (ich kann das Snippet für das Leben von mir nicht finden, aber die gewünschte Standardkategorie, die im Beispiel verwendet wurde, war "Autoren"). Das macht mich verrückt und ich würde mich sehr über Ihre Hilfe freuen. Vielen Dank.

BEARBEITEN: Ich habe den folgenden Code (den ich von here erhalten habe) ausprobiert und wurde "nicht kategorisiert", um ihn beim Speichern für den Beitragstyp "Community" automatisch zu überprüfen. Das Problem ist jedoch, dass er vollständig überschreibt andere Kategorien, durch die Sie dies ersetzen könnten. Das heißt, wenn Sie das Kontrollkästchen "Nicht kategorisiert" deaktivieren und sinnvolle Kategorien auswählen, werden beim "Veröffentlichen" oder "Speichern" alle diese Auswahlen gelöscht und die Community wiederhergestellt. Muss nur "nicht kategorisiert" sein bis Der Benutzer ersetzt diese Standardkategorie (genau so, wie eine Standardkategorie mit dem regulären Typ "Post" funktioniert).

function add_comm_category_automatically($post_ID) {
global $wpdb;
if(!wp_is_post_revision($post_ID)) {
$uncategorized= array (1);
wp_set_object_terms( $post_ID, $uncategorized, 'category');
}
}
add_action('save_post', 'add_comm_category_automatically');
4
zk87

Verwenden Sie den Aktions-Hook save_post und in der Rückruffunktion die Funktion wp_set_object_terms ($ object_id, $ terms, $ taxonomy, $ append).

Für Ihren benutzerdefinierten Beitragstyp kann der Code folgendermaßen lauten

function save_book_meta( $post_id, $post, $update ) {

    $slug = 'book'; //Slug of CPT

    // If this isn't a 'book' post, don't update it.
    if ( $slug != $post->post_type ) {
        return;
    }

    wp_set_object_terms( get_the_ID(), $term_id, $taxonomy );
}

add_action( 'save_post', 'save_book_meta', 10, 3 );

$ taxonomy - Der Kontext, in dem der Begriff mit dem Objekt in Beziehung gesetzt werden soll. Dies kann eine Kategorie, ein post_tag oder der Name einer anderen Taxonomie sein.

$ term_id - Term-ID der Taxonomie

Ich kenne Ihr Projekt nicht genau, daher können Sie dieses Snippet als eine Möglichkeit betrachten, das zu tun, was Sie tun wollten.

Für weitere Informationen besuchen Sie bitte die beiden folgenden Links:

https://codex.wordpress.org/Function_Reference/wp_set_object_terms

https://codex.wordpress.org/Plugin_API/Action_Reference/save_post

Ich hoffe, Sie finden einen Ausweg.

2
mishu

Ich verwende pods.io, um meine CPTs und benutzerdefinierten Taxonomien zu erstellen. Hatte das selbe Problem. Mit dem Code von @mishu konnte ich mein Ziel erreichen.

function event_preset_category( $post_id, $post, $update ) {

    $slug = 'termine'; //Slug of CPT

    // If this isn't the right slug, don't update it.
    if ( $slug != $post->post_type ) {
        return;
    }

    // Get the ID of default/ fallback category
    // $default_term = get_term_by('slug', 'your_term_slug', 'your_custom_taxonomy');

    $default_term = get_term_by('slug', 'alle', 'termin_cat');

    wp_set_object_terms( get_the_ID(), $default_term->term_id, 'termin_cat' );
}

add_action( 'save_post', 'event_preset_category', 10, 3 );
0
BrainBUG