Ordenar posts por tipos de post personalizados en un botón select
-
Buenas!
En el menu de administración de WordPress tengo creados varios «custom-posts» cada uno con sus posts. Ahora en uno de esos post personalizados he creado un campo que recupera todos los posts de los posts personalizados. El problema es que necesitaría que los ordenara de la siguiente manera:
Post Personalizado 1:
Posts
Post Personalizado 2:
Posts
…Os paso el código que crea el campo y recupera y guarda los datos de select:
// Add the Meta Box function add_custom_meta_box_related() { add_meta_box( 'custom_meta_box_related', // $id 'Related Information', // $title 'show_custom_meta_box_related', // $callback 'related', // $page 'normal', // $context 'high'); // $priority } add_action('add_meta_boxes', 'add_custom_meta_box_related'); // Field Array $prefix_related = 'custom_'; $custom_meta_fields_related = array( array( 'label' => 'Related Items', 'desc' => 'Select a related item(s)', 'id' => $prefix_materiales.'post_id', 'type' => 'post_list', 'post_type' => array('products','paso1','paso2','paso3','paso4','compra'), ) ); // The Callback function show_custom_meta_box_related() { global $custom_meta_fields_related, $post; // Use nonce for verification echo '<input type="hidden" name="custom_meta_box_nonce" value="'.wp_create_nonce(basename(__FILE__)).'" />'; // Begin the field table and loop echo '<table class="form-table">'; foreach ($custom_meta_fields_related as $field_related) { // get value of this field if it exists for this post $meta_related = get_post_meta($post->ID, $field_related['id'], true); // begin a table row with echo '<tr> <th><label for="'.$field_related['id'].'">'.$field_related['label'].'</label></th> <td>'; switch($field_related['type']) { // case items will go here // post_list case 'post_list': $items = get_posts( array ( 'post_type' => $field_related['post_type'], 'posts_per_page' => -1 )); echo '<select multiple name="'.$field_related['id'].'" id="'.$field_related['id'].'"> <option value="">Select One or more</option>'; // Select One foreach($items as $item) { echo '<option value="'.$item->ID.'"',$meta_related == $item->ID ? ' selected="selected"' : '','> '.$item->post_title.'</option>'; } // end foreach echo '</select><br /><span class="description">'.$field_related['desc'].'</span>'; break; } //end switch echo '</td></tr>'; } // end foreach echo '</table>'; // end table } // Save the Data function save_custom_meta_related($post_id) { global $custom_meta_fields_related; // verify nonce if (!wp_verify_nonce($_POST['custom_meta_box_nonce'], basename(__FILE__))) return $post_id; // check autosave 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; } elseif (!current_user_can('edit_post', $post_id)) { return $post_id; } // loop through fields and save the data foreach ($custom_meta_fields_related as $field_related) { $old = get_post_meta($post_id, $field_related['id'], true); $new = $_POST[$field_related['id']]; if ($new && $new != $old) { update_post_meta($post_id, $field_related['id'], $new); } elseif ('' == $new && $old) { delete_post_meta($post_id, $field_related['id'], $old); } } // end foreach } add_action('save_post', 'save_custom_meta_related');
Supongo que en este punto
// post_list case 'post_list': $items = get_posts( array ( 'post_type' => $field_related['post_type'],'posts_per_page' => -1)); echo '<select multiple name="'.$field_related['id'].'"id="'.$field_related['id'].'"> <option value="">Select One or more</option>'; // Select One foreach($items as $item) { echo '<option value="'.$item->ID.'"',$meta_related == $item->ID ? 'selected="selected"' : '','> '.$item->post_title.'</option>'; } // end foreach
tengo que requerir el id de cada post personalizado pero no se me ocurre cómo.
Gracias de antemano
Viendo 2 respuestas - de la 1 a la 2 (de un total de 2)
Viendo 2 respuestas - de la 1 a la 2 (de un total de 2)
- El debate ‘Ordenar posts por tipos de post personalizados en un botón select’ está cerrado a nuevas respuestas.