visuellement la commande de tri « types de postes personnalisés » pour les utilisateurs finaux

wordpress.stackexchange https://wordpress.stackexchange.com/questions/2

  •  16-10-2019
  •  | 
  •  

Question

Maintenant, avec ces types de postes personnalisés et autres morceaux de contenu ne doivent pas nécessairement être organisée chronologiquement par date, pour exemple: le client a un 100 T-shirts comme "T-SHIRT" type de poste personnalisé et il veut définir leur ordre d'apparition.

Ce que vous approche suggérons de prendre pour laisser l'éditeur / admin du le site SORT leur ordre?

Était-ce utile?

Autres conseils

vous pouvez filtrer au sujet taxonomique

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

Je regardais le générateur de menu écrans d'administration. Depuis un menu est juste un type de poste personnalisé, je suis sûr que certains de ce genre de choses peut être utilisé comme source d'inspiration ..

o avoir un ordre de tri vraiment arbitraire (sans aucun rapport avec un champ de poste), vous aurez besoin de créer une « valeur de tri » (ou « poids ») champ et entrez une valeur numérique pour chaque élément dans ce domaine . Vous pouvez puis trier sur ce champ.

Si tout ce que vous voulez faire est de définir une position pour chaque « T-shirt », alors pourquoi ne pas simplement l'utilisateur du menu Ordre, vous pouvez trier par menu_order dans votre WP_Query. Vous devrez probablement faire une boîte de méta qui définit la propriété menu_order du poste. Ensuite, dans votre WP_Query:

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

Ceci fonctionnerait similaire à la façon dont vous commandez des images dans l'onglet Galerie Media Upload, pour Menu ensemble de la page Ordre.

Ou que je comprends mal quelque chose?

Ce que je préfère faire si je crée le type de poste dans un plug-in ou dans le code est d'ajouter aussi ce code, qui vous permet de définir un ordre par défaut de l'avant et d'arrière-plan et de définir également la variable GET dans l'admin pour que l'admin WordPress reconnaît le changement et met la flèche vers le haut si vous le tri par titre, date, ou tout ce que vous montrez dans la table 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

Depuis menu_order est le défaut, ce n'est pas nécessaire si vous trier un type de poste personnalisé par menu_order mais si elle est un type de poste où vous ne voulez pas l'utilisateur d'avoir à vous soucier de se classer et que vous voulez utiliser quelque chose comme le titre, il est très pratique.

Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top