it-swarm.com.de

Benutzerdefiniertes Feld als benutzerdefinierte Taxonomie?

Ich habe eine benutzerdefinierte Taxonomie, "Land". Ich verwende das Benutzer-Frontend WP, um Benutzern das Posten auf der Website zu ermöglichen. Die meisten Daten werden als benutzerdefinierte Felder gespeichert, daher habe ich ein benutzerdefiniertes Feld "cf_country". Ich möchte in der Lage sein, dieses benutzerdefinierte Feld auf die Taxonomie für vorhandene und alle zukünftigen Posts festzulegen. Ich habe ein Konverter-Plugin gefunden, aber es ist eine einmalige Sache. Ich möchte, dass dies automatisch geschieht. Gibt es eine Möglichkeit, dies zu tun?

Vielen Dank!

Mögliche Lösung `function save_taxonomy_data ($ post_id) {

// verify this came from our screen and with proper authorization.
if ( ! wp_verify_nonce( $_POST['_wpnonce'], 'wpuf-add-post' ) ) 
    return;

// OK, we're authenticated: we need to find and save the data
if ( isset( $_POST['cf_country'] ) ) { 
    wp_set_object_terms( $post_id, $_POST['cf_country'], 'country' );
}
}
add_action('wpuf_add_post_after_insert', 'save_taxonomy_data');
function edit_taxonomy_data( $post_id ) {

// verify this came from our screen and with proper authorization.
if ( ! wp_verify_nonce( $_POST['_wpnonce'], 'wpuf-edit-post' ) ) 
    return;

// OK, we're authenticated: we need to find and save the data
if ( isset( $_POST['cf_country'] ) ) { 
    wp_set_object_terms( $post_id, $_POST['cf_country'], 'country' );
}
}
add_action('save_post', 'edit_taxonomy_data');`
1
Acornrevolution

Ohne genau zu wissen, wie Ihr Eingabeformular aussieht, kann ich Ihnen nur Folgendes vorschlagen. Grundsätzlich überprüfen Sie, ob Sie die Erlaubnis zum Speichern der Daten haben oder nicht, und nehmen dann die Eingaben des Metas und setzen sie als Begriff in Ihrer Taxonomie über wp_set_object_terms() . Sie möchten dies jedes Mal auslösen, wenn ein Beitrag gespeichert wird ... z. B. auf dem Hook save_post.

function save_taxonomy_data($post_id) {

    // verify this came from our screen and with proper authorization.
    // your form should have a nonce <?php wp_nonce_field('taxonomy_country','taxonomy_noncename'); ?>
    if ( !wp_verify_nonce( $_POST['taxonomy_noncename'], 'taxonomy_country' )) {
        return $post_id;
    }

    // verify if this is an auto save routine. If it is our form has not been submitted, so we dont want to do anything
    if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) 
        return $post_id;


    // Check permissions
    if ( 'page' == $_POST['post_type'] ) {
        if ( !current_user_can( 'edit_page', $post_id ) )
            return $post_id;
    } else {
        if ( !current_user_can( 'edit_post', $post_id ) )
        return $post_id;
    }

    // OK, we're authenticated: we need to find and save the data
    // right now it is only working on posts and pages, need to adapt to other types here
    $post = get_post($post_id);
    if ( ($post->post_type == 'post') || ($post->post_type == 'page') ) { 

        isset( $_POST['post_country'] )
            wp_set_object_terms( $post_id, $_POST['post_country'], 'country' );

    }

}
add_action('save_post', 'save_taxonomy_data');

Angepasst von benutzerdefinierten Taxonomiebereichen und ähnlich zu Benutzerdefinierte Taxonomiebegriffe können nicht in einer benutzerdefinierten Metabox gespeichert werden .

Zweiter Versuch

Der erste Versuch ist so ziemlich das Speichern von Taxonomiedaten aus einer Metabox. Ich warf einen Blick auf den WP Benutzer-Frontend-Code und nahm einige Anpassungen vor. Dies soll das oben Gesagte ersetzen und setzt voraus, dass cf_country das name-Element der Eingabe ist.

function save_taxonomy_data( $post_id ) {

    // verify this came from our screen and with proper authorization.
    if ( ! wp_verify_nonce( $_POST['_wpnonce'], 'wpuf-add-post' ) ) 
        return;

    // OK, we're authenticated: we need to find and save the data
    if ( isset( $_POST['cf_country'] ) ) { 
        wp_set_object_terms( $post_id, $_POST['cf_country'], 'country' );
    }

}
add_action('wpuf_add_post_after_insert', 'save_taxonomy_data');

Dritter Versuch:

function save_taxonomy_data($post_id) {

    /* 
     * verify this came from our screen and with proper authorization.
    * your form should have a nonce <?php wp_nonce_field('wpuf-add-post','_wpnonce'); ?>
    */
    if ( !wp_verify_nonce( $_POST['_wpnonce'], 'wpuf-add-post' )) {
        return $post_id;
    }

    // verify if this is an auto save routine. If it is our form has not been submitted, so we dont want to do anything
    if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) 
        return $post_id;


    // Check permissions
    if ( 'page' == $_POST['wpuf_post_type'] ) { // post type is a hidden field in wpuf_
        if ( !current_user_can( 'edit_page', $post_id ) )
            return $post_id;
    } else {
        if ( !current_user_can( 'edit_post', $post_id ) )
        return $post_id;
    }

    // Work on all post types
    if ( isset( $_POST['post_country'] ) ) 
        wp_set_object_terms( $post_id, $_POST['post_country'], 'country' );


}
add_action('save_post', 'save_taxonomy_data');
2
helgatheviking