在帖子列表中的帖子标题下添加文本链接

时间:2013-03-06 作者:user27309

我对我的WP设置做了很多更改,现在,当我批准并发布挂起的帖子时,作者有一个小时的时间修改他们的文章。一小时后,编辑链接消失,无法再更改。我需要给他们机会删除帖子,但“垃圾”链接也没有了。我一直在考虑在帖子标题下添加一个新的文本链接,让作者向我发送一条消息,要求删除帖子。文本链接应将帖子名称作为主题,以便理解需要删除的帖子。这可能吗?谢谢

1 个回复
SO网友:bueltge

您可以通过钩子增强、更改post后端表视图中每个帖子标题的字符串:

add_filter( \'post_row_actions\', array( $this, \'add_archive_link\' ), 10, 2 );

请参见此屏幕截图中的结果:

enter image description here

下面是我添加链接的方法

    /**
     * Add link on archive
     *
     * @uses   get_post_type_object, get_archive_post_link, current_user_can, esc_attr
     * @access public
     * @since  0.0.1
     * @param  array string $actions
     * @param  integer $id
     * @return array $actions
     */
    public function add_archive_link( $actions, $id ) {
        global $post, $current_screen, $mode;

        $post_type_object = get_post_type_object( $post->post_type );

        if ( is_array( $this->def_archive_screens ) && ! in_array( $current_screen->id, $this->def_archive_screens ) )
            return $actions;
        if ( ! current_user_can( $post_type_object->cap->delete_post, $post->ID ) )
            return $actions;

        $actions[\'archive\'] = \'<a href="\' . $this->get_archive_post_link( $post->ID ) 
            . \'" title="\'
            . esc_attr( __( \'Move this item to the Archive\', $this->textdomain  ) ) 
            . \'">\' . __( \'Archive\', $this->textdomain  ) . \'</a>\';

        return $actions;
    }
你必须用钩子admin_action_{your_string} 对于回调,如果用户单击链接。下面还有我的字符串示例archive:

    add_action( \'admin_action_archive\', array( $this, \'archive_post_type\' ) );
现在,钩子的方法是:

    /**
     * Archive post type
     *
     * @uses   wp_die, set_post_type, add_post_meta, wp_redirect, admin_url
     * @access public
     * @since  0.0.1
     * @return void
     */
    public function archive_post_type () {

        if ( ! (
            isset( $_GET[\'post\']) || 
            ( isset( $_REQUEST[\'action\']) && \'archive\' == $_REQUEST[\'action\'] ) 
        ) ) {
            wp_die( __( \'No post to archive has been supplied!\', $this->textdomain ) );
        }

        $id = (int) ( isset( $_GET[\'post\']) ? $_GET[\'post\'] : $_REQUEST[\'post\']);

        if ( $id ) {
            $redirect_post_type = \'\';
            $archived_post_type = get_post_type( $id );
            if ( ! empty( $archived_post_type ) )
                $redirect_post_type = \'post_type=\' . $archived_post_type . \'&\';
            // change post type
            set_post_type( $id, $this->post_type_1 );
            // add old post_type to post meta
            add_post_meta( $id, $this->post_meta_key, $archived_post_type, TRUE );
            wp_redirect( admin_url( \'edit.php?\' . $redirect_post_type . \'archived=1&ids=\' . $id ) );
            exit;
        } else {
            wp_die( __( \'Sorry, i cant find the post-id\', $this->textdomain ) );
        }

    }
你找到一个插件,在上面使用这个github.

结束

相关推荐

我可以为远程博客在本地托管WP-admin吗?

我遇到了一个问题,我的主题在上传时创建了一堆大小不同的图像(因为这是应该的),而我的服务器会定期在上传过程中阻塞。这导致了一堆“MySQL服务器已经离开了…”问题,我最终得到的是不包含任何数据的媒体上传。预算中没有专用服务器。而且,我的web主机并不热衷于为我的帐户提供更多RAM。因此,从我当前的托管解决方案中迁移不是一种选择。然而,我办公室里有一台测试服务器,有4个CPU和16GB的RAM,我想,“嘿,有没有办法在本地托管所有的WP管理功能,只需将更改推送到远程服务器?”如果有人问到这一点,我会向你道歉