it-swarm.com.de

Wie erzwinge ich ein Spaltenlayout auf einer benutzerdefinierten Bearbeitungsseite für den Beitragstyp?

Ich habe ein Plugin mit benutzerdefinierten Beitragstypen erstellt und muss die zweispaltige Standardbeitragsseite in eine einzelne Spalte zwingen. Gleichzeitig muss die Publish Metabox nach unten verschoben werden. Ich muss das irgendwie über die Funktionen machen wie.

Ich habe einige Lösungen von WPSE, aber die einzige Lösung, die ich gefunden habe, verbirgt tatsächlich die Metabox "Veröffentlichen". Ich kann nicht herausfinden, warum.

Irgendwelche Ideen, wie das geht?

3
Armand

Es gibt einen Filter namens get_user_option_meta-box-order_{$page}, wobei $page der Name des Beitragstyps ist. Stellen Sie einfach sicher, dass submitdiv der letzte Wert im Array ist:

add_filter( 'get_user_option_meta-box-order_post', 'wpse25793_one_column_for_all' );
function wpse25793_one_column_for_all( $order )
{
    return array(
        'normal'   => join( ",", array(
            'postexcerpt',
            'formatdiv',
            'trackbacksdiv',
            'tagsdiv-post_tag',
            'categorydiv',
            'postimagediv',
            'postcustom',
            'commentstatusdiv',
            'slugdiv',
            'authordiv',
            'submitdiv',
        ) ),
        'side'     => '',
        'advanced' => '',
    );
}
6
Bainternet

Ein Ansatz besteht darin,die ursprüngliche Metabox zu entfernen und dann/ diese Metabox mit aktualisierten Parametern erneut hinzuzufügen. Dies verschiebt beispielsweise das Meta-Feld "Featured Image" von der Seitenspalte in die Hauptspalte für einen benutzerdefinierten Beitragstyp mit einem Slug cpt-slug:

Bearbeiten

Der Parameter für das Feld "Meta veröffentlichen" lautet "submitdiv", und der korrekte Rückruf lautet "post_submit_meta_box()". Ich habe den folgenden Code aktualisiert, um diese korrekten Parameter wiederzugeben. Ich habe auch den Parameter add_meta_box()$context von 'high' in 'low' geändert, sodass das Feld Meta veröffentlichen unten hinzugefügt wird:

<?php
function wpse25793_move_post_metaboxes( $post ) {
    global $wp_meta_boxes;

    remove_meta_box( 'submitdiv', 'cpt-slug', 'side' );
    add_meta_box( 'submitdiv', __( 'Publish' ), 'post_submit_meta_box', 'cpt-slug', 'normal', 'low' );
}
add_action( 'add_meta_boxes_cpt-slug', 'wpse25793_move_post_metaboxes' );
?>

Der Ansatz sollte für die Meta-Box "Veröffentlichen" identisch sein. Sie müssen nur das Veröffentlichungs-Meta-Feld anstelle des ausgewählten Bild-Meta-Felds entfernen/hinzufügen.

3
Chip Bennett

Hallo, beantworte einfach den zweiten Teil der Frage, der sich mit dem "Erzwingen einer Spalte" befasst. Du kannst dies mit dem get_user_option_screen_layout_{Post_type}-Filter tun. Um alle Benutzer anzusprechen, können Sie dies zum Beispiel tun:

add_filter( 'get_user_option_screen_layout_spectacle',
  function( $result, $option, $user ){
    if( !empty($user) ):
       $result = '1';
    endif;
return $result;
  }, 
10, 3 );
0
CRavon