前端编辑、前端用户控制面板

时间:2012-10-26 作者:Trce

我正在创建一个网站,以便用户可以从前端提交他们的文章。我已经安排了很多事情:

从前端提交自定义帖子类型的能力从后端阻止我想创建一个标签为“我的帖子”或“我的提交”的页面(针对登录用户),该页面将显示登录用户自己的自定义帖子类型和状态,以便他们知道已发布的内容、将来将发布的内容、待定的内容、草稿(以便他们可以返回并编辑)和待定的内容(以便我作为编辑知道文章何时可以供我审阅)。

我想我正在寻找一个前端用户仪表板。我尝试了WP User Frontend,但它与s2member冲突,不会显示s2member注册用户的帖子。

我只需要一些简单的东西,允许用户从前端轻松访问以管理他们的帖子。我一直在尝试一个接一个的插件,并将一些东西添加到我的短代码生成器中,但没有任何东西能像我所需要的那样工作。

它不一定是漂亮的,只是一个简单的代码,非程序员(像我一样)可以根据自定义的帖子类型进行更新。

为了进一步解释,我希望页面上有一个代码显示用户提交的所有交易(及其状态),另一个代码显示用户提交的所有文章(及其状态),等等。

任何帮助都会非常有用

提前感谢!

1 个回复
最合适的回答,由SO网友:Bainternet 整理而成

当我需要这样的东西时,我会不时使用它:

<?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();
到处都是评论,所以你可以了解那里发生了什么。

Usage 只需创建一个页面并添加以下短代码:[user_posts]这将为您提供登录用户的帖子列表。

您也可以这样更改帖子类型:[user_posts post_type="deal" number="5"]

结束

相关推荐

Add_ShortCode()在函数内不起作用

我有一个自定义的帖子类型bhour, 带字段bh_shortcode. 保存这种类型的帖子时,我希望它根据帖子的值bh_shortcode.如果bh_shortcode 是“test”,当一个[测试]快捷码标记出现在一个普通的post类型上时,不会发生任何事情--[测试]文本不会被替换。如果我放置add_shortcode(\'test\',\'save_bhour_details\'); 在功能之外,将替换[测试]文本。如何使用add_shortcode 函数内部的另一个函数?function bhou