So verstecken Sie alles in der PUBLISH-Metabox mit Ausnahme der Schaltfläche In den Papierkorb verschieben & VERÖFFENTLICHEN

10

Ich habe einen benutzerdefinierten Beitragstyp (Kontakte genannt). Da dieser Beitragstyp nicht wie ein Beitrag funktioniert, möchte ich nicht ENTWURF SPEICHERN, VORSCHAU, Status, Sichtbarkeit oder Veröffentlichungsdatum anzeigen.

Die einzigen Optionen, die ich anzeigen möchte, sind die Schaltflächen PUBLISH & Move to Trash.

Gibt es eine Möglichkeit, diese anderen Optionen auszublenden? Wenn nicht, wie erstelle ich ein neues PUBLISH & Move to Trash, das ich einer neuen Metabox hinzufügen kann?

katemerart
quelle

Antworten:

14

Sie können die Optionen einfach mit CSS ausblenden. Dadurch wird eine Anzeige hinzugefügt: Kein Stil für die verschiedenen und kleineren Veröffentlichungsaktionen auf den Seiten post.php und post-new.php. Es wird auch nach einem bestimmten Beitragstyp gesucht, da alle Beitragstypen diese beiden Dateien verwenden.

function hide_publishing_actions(){
        $my_post_type = 'POST_TYPE';
        global $post;
        if($post->post_type == $my_post_type){
            echo '
                <style type="text/css">
                    #misc-publishing-actions,
                    #minor-publishing-actions{
                        display:none;
                    }
                </style>
            ';
        }
}
add_action('admin_head-post.php', 'hide_publishing_actions');
add_action('admin_head-post-new.php', 'hide_publishing_actions');
Brian Fegter
quelle
Brian - Danke für die schnelle Antwort. Ich habe die Funktion ausprobiert und 'POST_TYPE' durch den Namen des benutzerdefinierten Beitragstyps (Kontakte) ersetzt, aber beim Bearbeiten / Hinzufügen neuer Seiten wird nichts entfernt.
Katemerart
Schauen Sie sich meine letzte Bearbeitung an. Es sollte das Problem beheben. :)
Brian Fegter
Das ist großartig - dies hat eine ganz neue Möglichkeit eröffnet, Dinge zu entfernen, die ich nicht zeigen möchte !! Ich danke dir sehr.
Katemerart
Freut mich zu helfen :)
Brian Fegter
1
Nur um darauf hinzuweisen: Sie können eine Einrückungsstufe für Ihren Code entfernen, indem Sie dies einfach if ( $post->post_type != $my_post_type ){ return; }am Anfang tun . Sie müssen nicht den gesamten Code in die ifAnweisung einschließen.
Pete
1

In diesem Beispiel können Sie einfach festlegen, für welche Beitragstypen die Veröffentlichungsoptionen ausgeblendet werden sollen. Im Beispiel werden sie für den Typ des integrierten Topftyps pageund den benutzerdefinierten Beitragstyp ausgeblendet cpt_portfolio.

/**
 * Hides with CSS the publishing options for the types page and cpt_portfolio
 */
function wpse_36118_hide_minor_publishing() {
    $screen = get_current_screen();
    if( in_array( $screen->id, array( 'page', 'cpt_portfolio' ) ) ) {
        echo '<style>#minor-publishing { display: none; }</style>';
    }
}

// Hook to admin_head for the CSS to be applied earlier
add_action( 'admin_head', 'wpse_36118_hide_minor_publishing' );

Wichtiges Update

Ich würde auch vorschlagen, dass Sie den Post-Status "Veröffentlicht" erzwingen, um das Speichern von Posts als Entwürfe zu vermeiden:

/**
 * Sets the post status to published
 */
function wpse_36118_force_published( $post ) {
    if( 'trash' !== $post[ 'post_status' ] ) { /* We still want to use the trash */
        if( in_array( $post[ 'post_type' ], array( 'page', 'cpt_portfolio' ) ) ) {
            $post['post_status'] = 'publish';
        }
        return $post;
    }
}

// Hook to wp_insert_post_data
add_filter( 'wp_insert_post_data', 'wpse_36118_force_published' );
Nabil Kadimi
quelle