web-dev-qa-db-fra.com

Edition frontend, tableau de bord utilisateur frontend

Je crée un site Web pour que les utilisateurs puissent soumettre leurs articles depuis le début. J'ai pas mal de choses en place:

  • La possibilité de soumettre des types de publication personnalisés à partir du serveur frontal
  • Bloqué du back-end.

J'aimerais créer une page (pour les utilisateurs connectés) intitulée "mes publications" ou "mes soumissions" qui montrera aux utilisateurs connectés leurs types de publication personnalisés et leur statut afin qu'ils sachent ce qui a été publié, ce qui sera publiés à l’avenir, en attente, brouillons (pour qu’ils puissent remonter et éditer) et en attente (pour que, en tant que rédacteur en chef, je sache quand un article est prêt pour ma relecture).

Je suppose que je recherche un tableau de bord d'utilisateur frontend. J'ai essayé WP User Frontend, mais il se heurte à s2member et n'affiche pas les messages des utilisateurs s2member enregistrés.

J'ai juste besoin de quelque chose de simple qui permette aux utilisateurs un accès facile depuis le début pour gérer leurs publications. J'ai essayé plug-in après plug-in et ajouté des éléments à mon créateur de code court, mais rien ne fonctionne comme je le souhaite.

Cela ne doit pas forcément être joli, mais un simple code qu'un type de non-codeur (comme moi) met à jour par type de message personnalisé.

Pour expliquer davantage, j'aimerais avoir un code sur une page montrant aux utilisateurs toutes les offres qu'ils ont soumises (et leur statut), et un autre code pour montrer aux utilisateurs tous les articles qu'ils ont soumis (et leur statut), etc.

Toute aide serait très utile

Merci d'avance!

2
Trce

J'ai quelque chose que j'utilise de temps en temps quand j'ai besoin de quelque chose comme ça:

<?php
/*
Plugin Name: List User Posts
Plugin URI: http://en.bainternet.info
Description: lists user posts on the front end
Version: 0.1
Author: Bainternet
Author URI: http://en.bainternet.info
*/

if (!class_exists('list_user_posts')){
    /**
    * list_user_posts
    * @author Ohad Raz
    */
    class list_user_posts
    {
        /**
         * __construct class constructor
         * 
         * @author Ohad Raz
         * @param array $args
         */
        function __construct($args = array())
        {
            add_shortcode('user_posts', array($this,list_user_posts));
        }

        /**
         * list_user_posts shortcode handler
         * 
         * @author Ohad Raz
         * @param  array  $attr    shortcode attributes
         * @param  string $content shortcode content
         * @return string
         */
        public function list_user_posts($attr = array(), $content = null)
        {
            extract(shortcode_atts(array(
                    'post_type' => 'post',
                    'number' => 10,
                ), $attr));

            //if the user is not logged in the give him a link to log in
            if (!is_user_logged_in()){
                return sprintf(__('You Need to <a href="%s">Login</a> to see your posts'),wp_login_url(get_permalink()));
            }
            //this is for pagination
            $pagenum = isset( $_GET['pagenum'] ) ? intval( $_GET['pagenum'] ) : 1;

            //get user's posts
            $args = array(
                'author' => get_current_user_id(), //this makes the query pull post form the current user only
                'post_status' => array('draft', 'future', 'pending', 'publish'),
                'post_type' => $post_type,
                'posts_per_page' => $number,
                'paged' => $pagenum
            );
            $user_posts = new WP_Query( $args );

            $retVal = '';
            if ( $user_posts->have_posts() ) {

                //set table headers
                $retVal = '
                    <table class="user-posts-table" cellpadding="0" cellspacing="0">
                        <thead>
                            <tr>
                                <th>'.__( 'Title', 'lup' ).'</th>
                                <th>'.__( 'Status', 'lup' ).'</th>
                                <th>'.__( 'Actions', 'lup' ).'</th>
                            </tr>
                        </thead>
                        <tbody>';
                //loop over and add each post to the table
                global $post;
                $temp = $post;
                while ($user_posts->have_posts()){
                    $user_posts->the_post();
                    $title = $post->post_title;
                    $link = '<a href="'.get_permalink().'" title="'.sprintf( esc_attr__( 'Permalink to %s', 'lup' ), the_title_attribute( 'echo=0' ) ).'" rel="bookmark">'.$title.'</a>';
                    $retVal .= 
                            '<tr>
                                <td>
                                    '.( in_array( $post->post_status, array('draft', 'future', 'pending') ) ? $title : $link).'
                                </td>
                                <td>
                                    '.$post->post_status .'
                                </td>
                                <td>
                                    <a href="LINK_TO_YOUR_EDIT_PAGE"><span style="color: green;">'. __( 'Edit', 'lup' ).'</span></a>
                                    <a href="LINK TO YOUR DELETE PAGE"><span style="color: red;">'.__( 'Delete', 'lup' ).'</span></a>
                                </td>
                            </tr>';
                }
                $retVal .= '</tbody></table>';

                //create pagination (if needed)
                if ($user_posts->found_posts > $number ){
                    $pagination = paginate_links( array(
                        'base' => add_query_arg( 'pagenum', '%#%' ),
                        'format' => '',
                        'prev_text' => __( '&laquo;', 'lup' ),
                        'next_text' => __( '&raquo;', 'lup' ),
                        'total' => $user_posts->max_num_pages,
                        'current' => $pagenum
                        ) 
                    );
                    if ( $pagination ) {
                        $retVal .= '<div class="pagination">'.$pagination .'</div>';
                    }
                }
                //return table of posts
                return $retVal;
            }else{
                //  no posts for this users found
                return  __("No Posts Found");
            }
        }

    }//end list_user_posts class
}//end if
new list_user_posts();

C'est commenté partout pour que vous puissiez comprendre ce qui se passe là-bas.

Utilisation créez simplement une page et ajoutez ce shortcode: [user_posts] qui vous donnera une liste de messages de l'utilisateur connecté.

Vous pouvez également changer le type de message comme suit: [user_posts post_type="deal" number="5"]

1
Bainternet