web-dev-qa-db-fra.com

trier visuellement les "types de publication personnalisés" pour les utilisateurs finaux

Maintenant, avec ces types d'articles personnalisés et d'autres éléments de contenu qu'il n'est pas nécessaire d'organiser chronologiquement par date, par exemple: le client a 100 t-shirts en tant que type d'article personnalisé "SHIRT" et il souhaite définir leur ordre d'apparition. .

Quelle approche suggérez-vous pour laisser l’éditeur/l’administrateur du site TRIER leur commande?

8
Amit
1
Drew Gourley

vous pouvez filtrer sur la taxonomie

        // 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;
    }

utiliser ces crochets

            // 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

Je voudrais regarder les écrans d'administration du générateur de menu. Comme un menu est juste un type de message personnalisé, je suis sûr que certains de ces éléments peuvent être utilisés comme source d'inspiration.

0
Vid Luther

Si tout ce que vous voulez faire est de définir une position pour chaque "chemise", alors pourquoi ne pas simplement utiliser l'ordre de menu, vous pouvez alors trier par menu_order dans votre WP_Query. Vous devrez probablement créer une méta-boîte qui définit la propriété menu_order de la publication. Puis dans votre WP_Query:

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

Cela fonctionnerait de la même manière que vous commandez des images dans l’onglet Galerie Media Upload, pour l’ordre des menus de la page.

Ou est-ce que je comprends mal quelque chose?

0
Joe Hoyle

Ce que je préfère faire si je crée le type de publication dans un plugin ou dans du code est également d'ajouter ce code, ce qui vous permet de définir un ordre par défaut pour le début et la fin et de définir également la variable GET dans admin. que l'administrateur WordPress reconnaît le changement et place la flèche vers le haut si vous triez par titre, par date ou par tout autre élément que vous indiquez dans le tableau d'administration.

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

Étant donné que menu_order est la valeur par défaut, cette option n'est pas nécessaire si vous triez un type de publication personnalisé par menu_order mais s'il s'agit d'un type de publication pour lequel vous ne souhaitez pas que l'utilisateur ait à se soucier du tri et si vous souhaitez utiliser quelque chose comme title. , c'est très pratique.

0
Andrew T

Pour avoir un ordre de tri vraiment arbitraire (sans aucun lien avec un champ de publication), vous devez créer un champ "valeur de tri" (ou "poids") et entrer une valeur numérique pour chaque élément de ce champ. Vous pouvez ensuite trier sur ce champ.

0
WhIteSidE