Entfernen Sie die Meta-Box "Empfohlenes Bild"

7

Wie kann ich das Meta-Feld "Ausgewähltes Bild" entfernen? Ich habe versucht, die remove_meta_boxFunktion zu verwenden und die Box-ID anzugeben, aber es scheint nicht so zu funktionieren wie bei den anderen nativen Meta-Boxen.

Hier ist der spezifische Code, den ich ausprobiert habe:

add_action( 'admin_menu', 'remove_thumbnail_box' );

function remove_thumbnail_box() {
    remove_meta_box( 'postimagediv', 'post', 'side' );
}
matt
quelle

Antworten:

19

Ich hatte keine Zeit, dies zu testen, aber es sieht so aus, als ob es für Sie funktionieren sollte.

add_action('do_meta_boxes', 'remove_thumbnail_box');

function remove_thumbnail_box() {
    remove_meta_box( 'postimagediv','post','side' );
}

Überprüfen Sie dies für weitere Informationen .

Bearbeiten: Die Hauptänderung hier ist, dass Sie die Funktion an do_meta_boxes anstatt an admin_menu anhängen müssen

PNMG
quelle
1
HINWEIS: Sie können den Beitragstyp auch überprüfen, indem Sie sich die an Ihren Rückruf übergebene Variable ansehen (wenn Sie diese Änderungen an festgelegten Typen vornehmen möchten), wobei Sie natürlich daran denken, die eingehende Variable in die Funktion einzufügen, d. H. function remove_thumbnail_box( $post_type )
t31os
4

Die Post-Miniaturansicht wird einem Post-Typ hinzugefügt, da dieser Post-Typ dies unterstützt . Wenn Sie die Funktion für Miniaturansichten von Posts aus einem Post-Typ entfernen möchten, können Sie anrufen remove_post_type_support(). Normale Posts werden auch als benutzerdefinierte Post-Typen definiert, sodass sie auch für sie funktionieren sollten.

add_action( 'init', 'wpse4936_init', 100 /* Something high, to make sure all post types are registered */ );
function wpse4936_init()
{
    remove_post_type_support( 'post', 'thumbnail' );
    // Or remove it for all registerd types
    foreach ( get_post_types() as $post_type ) {
        remove_post_type_support( $post_type, 'thumbnail' );
    }
}
Jan Fabry
quelle
Danke Jan. Kannst du erklären, worum es add_action( 'init', 'wpse4936_init', 100 ); function wpse4936_init() {geht? Ich habe so etwas noch nie gesehen.
Matt
Außerdem versuche ich nicht, die Unterstützung zu entfernen. Ich muss versuchen, die Meta-Box zu entfernen (damit ich sie später in eine vorhandene benutzerdefinierte Meta-Box einfügen kann. Ich hätte sie wahrscheinlich angeben sollen, aber ich habe versucht, sie beizubehalten es ist einfach.
Matt
@matt: Wenn Sie nur die Metaboxen entfernen möchten, ist dies nicht das, was Sie wollen. Der dritte Parameter von add_action()definiert die Priorität: Der Standardwert ist 10. Wenn Sie also 100 angeben, wird er nach allen mit niedrigerer Priorität ausgeführt. Sie tun dies, um sicherzustellen, dass alle benutzerdefinierten Beitragstypen erstellt werden (sie befinden sich normalerweise im initHook), auch die von anderen Plugins.
Jan Fabry
@Jan, mir war eigentlich schon bewusst was das ist initund wo 100es das ist wpse4936_initwas ich noch nie gesehen habe. Was ist das?
Matt
3
remove_post_type_support( $post_type, 'post-thumbnail' );Ich wollte nur eine Notiz machen, die bei mir nicht funktioniert hat. Sieht so aus, als würde es funktionieren, wenn es so geschrieben wird:remove_post_type_support( $post_type, 'thumbnail' );
RachieVee
0
add_action('do_meta_boxes', 'remove_thumbnail_box');
function remove_thumbnail_box($post_type) {
    remove_meta_box( 'postimagediv', 'post.php', 'side' );
}

Wordpress scheint die vorgestellten Bilder nur zu deaktivieren, wenn die Aktion do_meta_boxes aufgerufen wird. Verwenden Sie auch "post.php" als Beitragstyp anstelle von "post". Ich weiß nicht, warum dies so ist, da es der Dokumentation widerspricht. Warnung: Die do_meta_boxes werden anscheinend ausgelöst, bevor die Funktion wp_get_current_user () verfügbar wird, sodass Sie sie nicht basierend auf dem Benutzertyp deaktivieren können. Es ist alles oder nichts. Vielleicht weiß jemand anderes von einer Problemumgehung.

SurferJoe
quelle
Können Sie bitte auch den Code erklären, wie er hilft? Code ohne Erklärung ist schwer zu verstehen und es wird bevorzugt, den Code zu erklären.
Bravokeyl