[Resolved] Asignar autor en un producto

This is the technical support forum for Toolset - a suite of plugins for developing WordPress sites without writing PHP.

Everyone can read this forum, but only Toolset clients can post in it. Toolset support works 6 days per week, 19 hours per day.

This topic contains 6 replies, has 2 voices.

Last updated by Rafael Corts 5 months, 3 weeks ago.

Assigned support staff: Nigel.

Author
Posts
#1349869

Hola Nigel, estoy intentando crear una función nueva parecida a la que me indicaste unos días.

add_action('cred_save_data', 'assignar_vendor', 10, 2);

function assignar_vendor($user_id, $form_data)
{
    $campo = 'product_vendors'; // Editar
    $form_ids = array(4427); // Editar
 
    if (in_array($form_data['id'], $form_ids)) {
 
        // update field 'registered' with current date
        update_user_meta( $user_id, 'wcpv_'.$campo, time() );
    }
}

Esta función hace que cuando el usuario crea un producto de Woocommerce, le asigna en el campo de una taxonomía (vendor) el nombre del autor automáticamente.
la información la estoy obteniendio del auto

[wpv-post-author]

y se asignará en la texonomía de

wcpv_product_vendors

el formulario en donde se debe aplicar es en el id:4427.

Creo que en donde no esta correcto es en el IF

 if (in_array($form_data['id'], $form_ids)) {

Tengo otro código que me pasaste para poder hacer una función parecida, cogiendo el "nombre del centro" del mismo autor
y aplicándolo en la taxonomía vendor "wcpv_product_vendors", creo que es mas fácil el primer caso ya que solo hemos de copiar el nombre del [wpv-post-author] y ponerlo en la texonomia "wcpv_product_vendors".

Saludos.

add_action( 'cred_save_data', 'tssupp_form_submit', 10, 2 );
function tssupp_form_submit( $post_id, $form_data ){
 
    $relationship = 'centres_product'; // Editar
    $taxonomy = 'wcpv_product_vendors'; // Editar
 
 
    if ( in_array( $form_data['id'], array( 4427 ) ) ) { // Editar ID del formulario
 
        // ID de entrada padre
        $parent_id = $_POST['@' . $relationship . '_parent'];
 
        $parent_title = get_the_title( $parent_id );
 
        // necesitamos el ID del término correspondiente
        $term = get_term_by( 'name', $parent_title, $taxonomy );
 
        // asignar término 
        wp_set_object_terms( $post_id, $term->term_id, $taxonomy );
     }
}

Gracias y Saludos.
Rafa corts

#1349995

Nigel
Supporter

Languages: English (English ) Spanish (Español )

Timezone: Europe/London (GMT+01:00)

Hola Rafa

El formulario actual, ¿qué publica? ¿Un producto?

¿Y lo que quieres es añadir como término de la taxonomía wcpv_product_vendors el nombre del autor de la entrada de producto?

#1350043

Hola Nigel, correcto cuando el usuario crea un producto, quiero oque se le asigne automáticamente el autor de quien crea el producto en la taxonomía Vendor.
Saludos.
Rafa Corts

#1350175

Nigel
Supporter

Languages: English (English ) Spanish (Español )

Timezone: Europe/London (GMT+01:00)

¿Pero puede ser que el término (con el nombre del autor) no existe? ¿La idea es crear este término?

Entonces, creo que lo que necesitas es algo así:

add_action( 'cred_save_data', 'tssupp_author_term', 10, 2 );
function tssupp_author_term( $post_id, $form_data ){
  
    if ( in_array( $form_data['id'], array( 4427 ) ) ) { 
  
        $tax = 'wcpv_product_vendors';

        $post = get_post( $post_id );
        $author_id = $post->post_author;
        $author = get_the_author_meta( 'display_name', $author_id );

        // does the term already exist?
        $term = term_exists( $author, $tax );
        if ( is_null($term) ){
            $term = wp_insert_term( $author, $tax );
        }        
        // asign term
        wp_set_object_terms( $post_id, $term['term_id'], $tax );
     }
}
#1355031

Hola Nigel, con el código que me has pasado cada vez que creo un producto nuevo (Woocommerce) me genera un termino nuevo y se registra el ID, en principio no debería crearse ya que el nombre del autor puede tener x productos, solo es necesario que coja la información del

[wpv-post-author]

y lo registre en el termino en la taxonomía "Vendor" No su ID necesito que se vea el nombre.
No se si me llego a explicar.
Previamente cuando hacen el registro se les asigna un nombre y a partir de aquí solo se debe aplicar dicho nombre en la taxonomía del producto. Para poder relacionar el producto con el autor.
Saludos y muchas gracias.
Rafa Corts

#1355519

Nigel
Supporter

Languages: English (English ) Spanish (Español )

Timezone: Europe/London (GMT+01:00)

Hola Rafael

Hice unas pruebas más y se parece que había un problema con el código, creo que este te servirá.

add_action( 'cred_save_data', 'tssupp_author_term', 10, 2 );
function tssupp_author_term( $post_id, $form_data ){
  
    if ( in_array( $form_data['id'], array( 4427 ) ) ) { 
  
        $tax = 'wcpv_product_vendors';

        $post = get_post( $post_id );
        $author_id = $post->post_author;
        $author = get_the_author_meta( 'display_name', $author_id );

        wp_set_object_terms( $post_id, $author, $tax );
     }
}
#1358189

My issue is resolved now. Thank you!