it-swarm-es.com

ordenar visualmente los "tipos de publicaciones personalizadas" para los usuarios finales

Ahora, con esos tipos de publicaciones personalizadas y otros fragmentos de contenido que no necesariamente tienen que estar organizados cronológicamente por fecha, por ejemplo: el cliente tiene 100 camisetas como tipo de publicación personalizada "CAMISA" y desea establecer su orden de aparición .

¿Qué enfoque sugiere tomar para permitir que el editor/administrador del sitio ORDENE su pedido?

8
Amit
1
Drew Gourley

puedes filtrar sobre taxonomia

        // to filter by category
    function restrict_manage_posts() {
        global $typenow;

        if ( FB_CPT_POST_TYPE_1 == $typenow ) {
            $args = array('orderby' => 'count', 'hide_empty' => true);
            echo $this->get_taxonomy_html_select(FB_CPT_TAXONOMY_TYPE_1, $args);
        }
    }

    function get_taxonomy_html_select($taxonomy_name, $args) {

        $taxonomy = get_taxonomy($taxonomy_name);
        $terms = get_terms($taxonomy_name, $args);
        $label = __( 'Show all ' . $taxonomy->label, FB_CPT_TEXTDOMAIN );
        $html = array();
        $html[] = '<select style="min-width:155px;" id="' . $taxonomy_name . '" name="' . $taxonomy_name . '" class="postform">';
        $html[] = '<option value="0">' . $label . '</option>';
        if ( isset($_GET[$taxonomy_name]) )
            $this_term = $_GET[$taxonomy_name];
        else
            $this_term = '';
        foreach($terms as $term) {
            $default = ( $this_term == $term->term_id ? ' selected="selected"' : '' );
            $value = esc_attr($term->name);
            $value = $value . '&nbsp;&nbsp;(' . (int)$term->count . ')';
            $html[] = "\t" . '<option value="' . $term->term_id . '"' . $default . '>' . $value . '</option>';
        }
        $html[] = '</select>' . "\n";
        return implode( "\n", $html );
    }

    function request($request) {
        global $pagenow;

        if ( is_admin() && 'edit.php' == $pagenow && isset( $request[FB_CPT_TAXONOMY_TYPE_1] ) && FB_CPT_POST_TYPE_1 == $request[FB_CPT_TAXONOMY_TYPE_1] ) {
            $request['taxonomy'] = FB_CPT_TAXONOMY_TYPE_1;
            $request['term'] = get_term($request[FB_CPT_TAXONOMY_TYPE_1], FB_CPT_TAXONOMY_TYPE_1)->name;
            unset($request['name']);
        }

        return $request;
    }

usa estos ganchos

            // to filter custom post type per custom taxonomy
        add_action( 'restrict_manage_posts', array( &$this, 'restrict_manage_posts') );
        add_action( 'request', array( &$this, 'request' ) );
3
bueltge

Me gustaría mirar en las pantallas de administración del generador de menú. Ya que un menú es solo un tipo de publicación personalizada, estoy seguro de que algunas de esas cosas pueden usarse como inspiración.

0
Vid Luther

Si todo lo que desea hacer es establecer una posición para cada "Camiseta", entonces, ¿por qué no usar el Orden del Menú? Entonces, puede ordenar por menú_orden en su WP_Query. Probablemente tendrás que hacer un meta box que establezca la propiedad menu_order de la publicación. Luego en tu WP_Query:

$shirts = new WP_Query( 'post_type=shirt&orderby=menu_order&order=ASC' );

Esto funcionaría de manera similar a cómo ordena las imágenes en la pestaña Galería Media Upload, para configurar el Orden del menú de la página.

O estoy malinterpretando algo?

0
Joe Hoyle

Lo que prefiero hacer si estoy creando el tipo de publicación en un complemento o en un código es agregar también este código, que le permite establecer un orden predeterminado para la parte delantera y posterior y también configurar la variable GET en admin para que el administrador de WordPress reconoce el cambio y pone la flecha hacia arriba si está ordenando por título, fecha o cualquier otra cosa que esté mostrando en la tabla de administración.

add_filter( 'pre_get_posts' , 'my_cpt_order' ); // Runs before the posts are fetched
function my_cpt_order( $query ) {
    // Check query and alter only the query needed
    //echo '<PRE>'; print_r($query); echo '</PRE>'; 
    if ($query->query['post_type'] == 'cpt' && !isset($query->query['orderby'])) {
        $query->set( 'orderby' , 'title' );
        $query->set( 'order' , 'asc' );
        //get the arrow to show up over title in admin
        if (is_admin()) {
            $_GET['orderby'] = 'title';
            $_GET['order'] = 'asc';
        }
    } //if
} //my_cpt_order

Dado que menu_order es el valor predeterminado, no es necesario si está ordenando un tipo de publicación personalizada por menu_order pero si es un tipo de publicación donde no quiere que el usuario tenga que preocuparse de la clasificación por sí mismos y desea usar algo como el título , es muy práctico.

0
Andrew T

Para tener un orden de clasificación realmente arbitrario (no relacionado con ningún campo de publicación), deberá crear un campo de "valor de clasificación" (o "peso") e ingresar un valor numérico para cada elemento en ese campo. A continuación, puede ordenar en ese campo.

0
WhIteSidE