it-swarm-eu.dev

Odstranění Metabox pro "Slug" bez odstranění funkčnosti

Zde je zajímavá otázka.

Nedávno jsem si všiml, že pokud použijete kód

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

ve skutečnosti nejste schopni upravit slug, když kliknete na url slug pod názvem stránky.

Pro objasnění, když použijete remove_meta_box pro slugdiv, metabox a možnosti obrazovky budou odstraněny, ale stále můžete kliknout na url pod názvem příspěvku, který chcete upravit ... Nicméně, když jdete na aktualizaci/publikování příspěvku jakákoliv změna, kterou jste provedli, nebere.

Mým cílem je odstranit stejnou metabox z post editaci obrazovky a odebrat ji z obrazovky možnosti stránky, ale chci zajistit, že když upravíte slug pod názvem pošty, že to stále funguje.

Může někdo tento problém vyřešit? Díky předem.

7

Skončil jsem jen přidáním následujících CSS do css souboru, který jsem volal v souboru functions.php pro oblast admin:

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

#slugdiv { 
    display: none; 
    }

To odstranilo jak možnosti obrazovky, tak metabox a zároveň mi umožnilo upravit adresu URL pod názvem.

AKTUALIZOVÁNO

Na základě odpovědi FXFUTURE jsem změnil jeho kód rozšířením a zahrnutím hodnot css pro možnosti obrazovky a metaboxem slug a zároveň zajistil, že kód se dostane pouze na stránku post-new.php a post.php.

// 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

Box, který dovolí vydání slug pod titulem pošty je vlastně svázaný k slug metabox. Potřebuje to k práci. Odstranění metaboxu jej tedy přeruší.

Myslím si, že jediným řešením by bylo skrýt javascript nebo css. Něco takového bude fungovat:

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

Měli byste zavolat remove_meta_box v háku add_meta_boxes, abyste jej mohli používat. Testováno na 4.0.

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

Spíše než editovat váš css soubor můžete toto použít ve vašich function.php:

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