ordenar visualmente los “tipos de publicaciones personalizadas” para usuarios finales


9

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

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


¿Puedes dar algunos ejemplos de qué tipo de cosas desearía ordenarlas? Algunas respuestas pueden ser mejores para algunas cosas que para otras.
MikeSchinkel

Mike: tal vez camisetas en las que le gustaría estar seguro primero, o en general cualquier publicación que el usuario haya insertado no en el orden correcto.
Amit

Para aquellos que todavía están buscando en esta publicación, hay algunos buenos complementos de WP que resuelven este problema. Acabo de implementar este: wordpress.org/extend/plugins/post-types-order

Respuestas:



3

puedes filtrar sobre taxonomía

        // 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' ) );

Traté de implementarlo pero no funciona para mí ... ¿hay algún paso anterior que deba tomar? declarando alguna taxonomía? ¡Gracias!
Amit

es un ejemplo en mi clase para el tipo de publicación personalizada; debe cambiar la matriz (y esto, etc.) para no usarla en una clase y la constante FB_CPT_TAXONOMY_TYPE_1 es mi primera taxonomía personalizada y así sucesivamente y la constante FB_CPT_POST_TYPE_1 es mi primer tipo de publicación personalizada
bueltge

vea esta respuesta ( wordpress.stackexchange.com/questions/45/… ), es similar
bueltge

Entiendo ... Probablemente no me expliqué muy bien, lo que quise decir es dejar que el usuario establezca el orden de clasificación y este nuevo orden debería reflejarse en el front-end. lo que realmente estoy buscando es algo así como la nueva interfaz gráfica de usuario pero para publicaciones / tipo de publicaciones personalizadas.
Amit

0

Vería las pantallas de administración del generador de menús. Dado que un menú es solo un tipo de publicación personalizada, estoy seguro de que algunas de esas cosas pueden usarse como inspiración.


eso no es una mala idea, pero ¿los menús contienen infinitos números de elementos (más de 100)? ¿no sería un poco hinchado tener un elemento de entrada para cada publicación?
Amit

0

Para tener un orden de clasificación verdaderamente arbitrario (sin relación alguna con ningún campo de publicación), necesitaría crear un campo de "valor de clasificación" (o "peso") e ingresar un valor numérico para cada elemento en ese campo. Luego puede ordenar en ese campo.


0

Si todo lo que desea hacer es establecer una posición para cada "Camisa", entonces, ¿por qué no simplemente usar el Orden del menú, entonces puede ordenar por menu_order en su WP_Query. Probablemente tendrá que hacer un cuadro de meta que establece la menu_orderpropiedad 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 ordenar imágenes en la Media Uploadpestaña Galería, para configurar el Orden del menú de la página.

¿O estoy malinterpretando algo?


lo entendiste bien, pero piensa en el usuario ... debe ir manualmente a cada publicación y establecer un número en el cuadro de meta ... no muy amigable ...
Amit

Incorporarlo en Edición rápida lo haría mucho más fácil, pero sí, podría llevar mucho tiempo.
Joe Hoyle

0

Lo que prefiero hacer si estoy creando el tipo de publicación en un complemento o en un código es también agregar este código, lo que le permite establecer un orden predeterminado para el front-end y el back-end y también configurar la variable GET en admin 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, esto no es necesario si está ordenando un tipo de publicación personalizado por menu_order, pero si es un tipo de publicación donde no desea que el usuario tenga que preocuparse por ordenarlos y desea usar algo como título Es muy útil.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.