web-dev-qa-db-ja.com

フロントエンド編集、フロントエンドユーザーダッシュボード

ユーザーがフロントエンドから記事を送信できるように、Webサイトを作成しています。いくつか設定します。

  • フロントエンドからカスタム投稿タイプを送信する機能
  • バックエンドからブロックされています。

自分のカスタム投稿の投稿タイプとステータスを表示する「自分の投稿」または「投稿」というラベルのページ(ログインユーザー用)を作成して、公開されている内容と今後の予定を確認します。将来公開される、保留中のドラフト(元に戻って編集できるようにする)、および保留中(編集者として、記事がいつ私のレビューの準備ができているかを知るため)。

フロントエンドのユーザーダッシュボードを探していると思います。私はWP User Frontendを試しましたが、s2memberと衝突してs2member登録ユーザーからの投稿を表示しません。

フロントエンドからユーザーが自分の投稿を管理するための簡単なアクセスを可能にする簡単なものが必要です。私はプラグインの後にプラグインを試してみて、私の短いコード作成者にものを追加してきましたが、私がそれを必要とする方法でうまくいくものは何もありません。

それはきれいである必要はありません、ただ私のような非コーダーがカスタム投稿タイプによって更新する単純なコード。

さらに説明すると、ページ上の1つのコードにユーザーが送信したすべての取引(およびそのステータス)を表示し、別のコードにユーザーが送信したすべての記事(およびそのステータス)を表示します等.

任意の助けは非常に便利だろう

前もって感謝します!

2
Trce

私はそのようなものが必要なときに時々使うものがあります:

<?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();

あなたはそこで起こっていることを理解できるように、その場所全体にコメントしました。

使用法単にページを作成し、次のショートコードを追加します:[user_posts]これは、ログインしたユーザーによる投稿のリストを提供します。

次のように投稿タイプを変更することもできます:[user_posts post_type="deal" number="5"]

1
Bainternet