Sugiero que crear un tipo de publicación personalizado con el nombre ‘Book Writer’ será una buena solución.
Primero, cree un tipo de publicación personalizada con el nombre «escritores de libros». Y luego guarde a todos los escritores de libros como una publicación.
Luego cree un meta-box personalizado en woo-commerce y asígnele el nombre «Asignar un autor de libro». Y cree un metacampo dinámico como la lista de selección en él, que mostrará una lista de todas las publicaciones de «escritores de libros», que son el nombre de los escritores de libros. Y guarde y luego guarde ese meta campo.
Antes de publicar el producto, seleccione el nombre del autor del libro que desea asignar a ese producto y luego publíquelo.
De esta manera puede agregar autores y sus datos relevantes del autor individual. Sin agregarlos como usuario. Y también puede crear una página de descripción detallada para cada escritor de libros.
Espero que entiendas.
Agregue el siguiente código en su function.php
function book_writer_meta_box(){
add_meta_box(
'book_writer_box_id', // Unique ID
'Assign a book author', // Box title
'render_book_writer_meta_box_html',
'product', // Post type
'normal',
'low'
);
}
add_action('add_meta_boxes', 'book_writer_meta_box');
function render_book_writer_meta_box_html($post){
$meta = get_post_meta( $post->ID );
wp_nonce_field( 'book_writer_metabox', 'book_writer_metabox_nonce' );
$val_bookWriter = ( isset( $meta['book_writer'][0] ) && '' !== $meta['book_writer'][0] ) ? $meta['book_writer'][0] : '';
// print_r("<p>val_autoplayTime-".$val_autoplayTime."<p/>");
echo "<div class="bookWriter_meta_fields_container">";
echo '<p><label for="book_writer"><b>Book Writer Name: </b></label><input type="text" name="book_writer" id="book_writer" style="width:100%;" value="'. esc_attr( $val_bookWriter ) .'"></p>';
echo "</div>";
}
function book_writer_save_metadata($post_id){
// Check if our nonce is set.
if ( ! isset( $_POST['book_writer_metabox_nonce'] ) || ! wp_verify_nonce( sanitize_key( $_POST['book_writer_metabox_nonce'] ), 'book_writer_metabox' ) ) { // Input var okay.
return $post_id;
}
// If this is an autosave, our form has not been submitted, so we don't want to do anything.
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
return $post_id;
}
// Check the user's permissions.
if ( isset( $_POST['post_type'] ) && '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, it's safe for us to save the data now.
// Make sure that it is set.
if ( !isset($_POST['book_writer']) ) {
return;
}
$fields = ['book_writer'];
foreach ($fields as $field) {
if (array_key_exists($field, $_POST)){
update_post_meta($post_id, $field, sanitize_text_field($_POST[$field]));
}
}
}
add_action('save_post', 'book_writer_save_metadata');
.