it-swarm.com.de

Entfernen von Metabox für "Slug", ohne Funktionalität zu entfernen

Hier ist eine interessante Frage.

Ich habe kürzlich bemerkt, dass, wenn Sie den Code verwenden

remove_meta_box('slugdiv', 'post', 'normal'); 

sie können den Slug nicht ändern, wenn Sie auf den URL-Slug unter dem Seitentitel klicken.

Wenn Sie remove_meta_box für das slugdiv verwenden, werden zur Verdeutlichung die Metabox- und Bildschirmoptionen entfernt. Sie können jedoch weiterhin auf die URL unter dem Beitragstitel klicken, um sie zu bearbeiten. Wenn Sie jedoch den Beitrag aktualisieren/veröffentlichen, werden Sie dazu aufgefordert Welche Änderung auch immer Sie vorgenommen haben, wird nicht übernommen.

Mein Ziel ist es, die gleiche Metabox aus dem Post-Bearbeitungsbildschirm zu entfernen UND sie von der Bildschirmoptionsseite zu entfernen, ABER ich möchte sicherstellen, dass dies immer noch funktioniert, wenn Sie den Slug unter dem Post-Titel bearbeiten.

Kann jemand eine Lösung für dieses Problem anbieten? Danke im Voraus.

7

Am Ende habe ich einfach das folgende CSS zu einer CSS-Datei hinzugefügt, die ich in meiner functions.php-Datei für den Admin-Bereich aufgerufen habe:

[for="slugdiv-hide"] { 
    display: none; 
    }

#slugdiv { 
    display: none; 
    }

Dadurch wurden sowohl die Bildschirmoptionen als auch die Metabox entfernt, und ich konnte dennoch die URL unter dem Titel bearbeiten.

AKTUALISIERTE

Basierend auf der Antwort von FXFUTURE habe ich seinen Code geändert, indem ich ihn erweitert und die CSS-Werte für Bildschirmoptionen und die Slug-Metabox hinzugefügt habe, wobei sichergestellt wurde, dass der Code nur auf den post-new.php- und post.php-Seiten enthalten ist.

// HIDE THE SLUG METABOX AND SLUG SCREEN OPTIONS
   function hide_slug_options() {
    global $post;
    global $pagenow;
    $hide_slugs = "<style type=\"text/css\">#slugdiv, #edit-slug-box, [for=\"slugdiv-hide\"] { display: none; }</style>\n";
    if (is_admin() && $pagenow=='post-new.php' OR $pagenow=='post.php') print($hide_slugs);
   }
   add_action( 'admin_head', 'hide_slug_options'  );
2

Die Box, die die Slug-Edition unter dem Post-Titel ermöglicht, ist tatsächlich an die Slug-Metabox gebunden. Es muss funktionieren. Wenn Sie die Metabox entfernen, wird sie beschädigt.

Ich denke, die einzige Lösung wäre, Javascript oder CSS zu verwenden, um es auszublenden. So etwas wird funktionieren:

function hide_slug_box() {
    global $post;
    global $pagenow;
    if (is_admin() && $pagenow=='post-new.php' OR $pagenow=='post.php') {
        echo "<script type='text/javascript'>
            jQuery(document).ready(function($) {
                jQuery('#edit-slug-box').hide();
            });
            </script>
        ";
    }
}
add_action( 'admin_head', 'hide_slug_box'  );
5
sorich87

Sie sollten remove_meta_box im Hook add_meta_boxes aufrufen, damit es funktioniert. Es wurde auf 4.0 getestet.

add_action( 'add_meta_boxes', 'customize_admin_backend_cpt',0 );

function customize_admin_backend_cpt () {
    remove_meta_box( 'slugdiv', 'your_cpt_goes_here', 'normal' );
}
2
tolginho

Anstatt Ihre CSS-Datei zu bearbeiten, können Sie dies in Ihrer functions.php verwenden:

function hide_all_slugs() {
global $post;
$hide_slugs = "<style type=\"text/css\"> #slugdiv, #edit-slug-box { display: none; }</style>";
print($hide_slugs);
}
add_action( 'admin_head', 'hide_all_slugs'  );
1
fxfuture