it-swarm.com.de

Hinzufügen eines Textlinks unter dem Beitragstitel in den Beitragslisten

Ich habe viele Änderungen an meinen WP Einstellungen vorgenommen. Wenn ich jetzt ausstehende Posts genehmige und veröffentliche, haben Autoren eine Stunde Zeit, um ihre Artikel zu ändern. Nach Ablauf der Stunde verschwindet der Bearbeitungslink und sie können sich nicht mehr ändern. Ich muss ihnen die Möglichkeit geben, den Beitrag zu entfernen, aber der "Papierkorb" -Link ist auch weg. Ich habe darüber nachgedacht, einen neuen Textlink unter dem Post-Titel hinzuzufügen, damit die Autoren mir eine Nachricht senden und mich bitten, den Post zu löschen. Der Textlink sollte den Namen des Beitrags als Betreff haben, um zu verstehen, welcher Beitrag entfernt werden muss. Ist das möglich? Vielen Dank

1
user27309

Sie können die Zeichenfolgen für jeden Beitragstitel in der Tabellenansicht des Backends für den Beitrag über Hook erweitern, ändern:

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

Sehen Sie sich das Ergebnis in diesem Screenshot an:

enter image description here

Unten finden Sie meine Methode zum Hinzufügen eines Links

    /**
     * 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;
    }

Sie müssen den Hook admin_action_{your_string} für den Rückruf verwenden, wenn der Benutzer auf den Link klickt. Ebenfalls unten ein Beispiel für meinen String archive:

    add_action( 'admin_action_archive', array( $this, 'archive_post_type' ) );

Nun die Methode für den Haken:

    /**
     * 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 ) );
        }

    }

Du findest ein Plugin, dort benutze dieses auf github .

4
bueltge