it-swarm.asia

إزالة Metabox لـ "Slug" دون إزالة الوظيفة

هنا سؤال مثير للاهتمام.

لقد لاحظت مؤخرًا أنه إذا استخدمت الشفرة

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

أنت غير قادر في الواقع على تعديل سبيكة عندما تنقر على رابط url تحت عنوان الصفحة.

للتوضيح ، عند استخدام remove_meta_box لـ slugdiv ، تتم إزالة خيارات metabox وخيارات الشاشة ولكن لا يزال بإمكانك النقر على عنوان url تحت عنوان المنشور لتعديله ... ومع ذلك ، عندما تذهب إلى تحديث/نشر المنشور أي تعديل قمت به لا يأخذ.

هدفي هو إزالة نفس metabox من شاشة تعديل النشر وإزالته من صفحة خيارات الشاشة ، لكنني أريد أن أتأكد من أنه عندما تقوم بتحرير سبيكة تحت عنوان المنشور الذي لا يزال يعمل.

يمكن لأي شخص أن يقدم حلا لهذه المشكلة؟ شكرا لك مقدما.

7
NetConstructor.com

انتهى بي الأمر فقط بإضافة CSS التالي إلى ملف css الذي كنت أتصل به في ملف jobs.php الخاص بي لمنطقة المسؤول:

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

#slugdiv { 
    display: none; 
    }

أدى ذلك إلى إزالة كل من خيارات الشاشة و metabox بينما لا يزال يسمح لي بتحرير عنوان url أسفل العنوان.

محدث

استنادًا إلى الإجابة التي قدمها FXFUTURE ، قمت بتعديل الكود الخاص به عن طريق توسيعه ، بما في ذلك قيم css لخيارات الشاشة والميتوكس البادئة مع ضمان تضمين الكود فقط في صفحة post-new.php و 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
NetConstructor.com

المربع الذي يسمح بإصدار slug تحت عنوان النشر مرتبط فعليًا بـ metabox. يحتاجها للعمل. لذلك ، فإن إزالة metabox سوف كسرها.

أعتقد أن الحل الوحيد هو استخدام جافا سكريبت أو css لإخفائه. شيء مثل هذا سوف يعمل:

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

يجب عليك استدعاء remove_meta_box في خطاف add_meta_boxes حتى تنجح. تم اختباره على 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

بدلاً من تحرير ملف css الخاص بك ، يمكنك استخدام هذا في وظائفك. 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