web-dev-qa-db-ja.com

投稿リストの投稿タイトルの下にテキストリンクを追加する

私は自分のWP設定に多くの変更を加えました、そして今、私が保留中の投稿を承認して公開するとき、著者は彼らの記事を修正するのに1時間かかります。時間が過ぎると編集リンクは消えてしまい、もう変更できなくなります。私は彼らに投稿を削除する機会を与える必要がありますが、「ゴミ」リンクも消えています。私は、投稿を削除するように依頼するメッセージを作者に送ってもらうために、投稿のタイトルの下に新しいテキストリンクを追加することを考えていました。投稿を削除する必要があることを理解するために、テキストリンクには投稿の名前を件名として含める必要があります。これは可能ですか?ありがとう

1
user27309

フック経由の投稿のバックエンドのテーブルビューで、各投稿タイトルに文字列を変更して拡張できます。

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 でこれを使います。

4
bueltge