Xóa Metabox cho hệ thống Slug mà không cần xóa chức năng


7

Đây là một câu hỏi thú vị.

Gần đây tôi đã nhận thấy rằng nếu bạn sử dụng mã

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

bạn thực sự không thể sửa đổi sên khi bạn nhấp vào sên url dưới tiêu đề trang.

Để làm rõ, khi bạn sử dụng remove_meta_box cho slugdiv, metabox và các tùy chọn màn hình sẽ bị xóa tuy nhiên bạn vẫn có thể nhấp vào url dưới tiêu đề bài đăng để chỉnh sửa ... Tuy nhiên, khi bạn đi cập nhật / xuất bản bài đăng bất kỳ sửa đổi nào bạn thực hiện đều không thực hiện.

Mục tiêu của tôi là loại bỏ metabox tương tự khỏi màn hình chỉnh sửa bài đăng VÀ xóa nó khỏi trang tùy chọn màn hình NHƯNG tôi muốn đảm bảo rằng khi bạn chỉnh sửa slug dưới tiêu đề bài viết mà nó vẫn hoạt động.

Bất cứ ai có thể cung cấp một giải pháp cho vấn đề này? Cảm ơn trước.


Xin chào @ NetConstructor.com : Tôi không hiểu câu hỏi của bạn: "Mục tiêu của tôi là xóa cùng một metabox khỏi màn hình chỉnh sửa bài đăng và xóa nó khỏi trang tùy chọn màn hình NHƯNG tôi muốn đảm bảo rằng khi bạn chỉnh sửa sên dưới bài đăng Tiêu đề mà nó vẫn hoạt động. " Nếu bạn loại bỏ trường, làm thế nào bạn có thể chỉnh sửa nó? Bạn có thể tua lại? Nó không rõ ràng với tôi.
MikeSchinkel

@MikeSchinkel - Tôi thực sự đã thử ở trên. Nếu bạn nhìn vào màn hình chỉnh sửa bài đăng hiện có và nhìn vào tiêu đề bài viết, bạn sẽ thấy một URL. Nếu bạn nhấp vào phần cuối của url, bạn có thể chỉnh sửa nó. Những gì tôi đang cố gắng làm là loại bỏ các tùy chọn màn hình và metabox "SLUG" bổ sung nhưng GIỮ cái dưới tiêu đề bài viết. Điều đó có ý nghĩa?
NetConstructor.com

@NetConstructor - Đó chỉ là dự đoán nhưng vui lòng xác thực: Có thể đây chỉ là trường hợp trong khi bạn có plugin đang chạy? Vui lòng verfiy với một cài đặt mới, sạch sẽ.
hakre

@MikeSchinkel - Tôi đã thực hiện cài đặt Wordpress mới và nhận thấy điều này không liên quan đến plugin. Nói cách khác, ngay cả khi không có plugin nào được cài đặt, điều này vẫn xảy ra. Bạn có thể vui lòng xác nhận bằng cách xóa metabox sên và cố gắng cập nhật sên bằng cách nhấp vào url dưới tiêu đề không?
NetConstructor.com

Câu trả lời:


5

Hộp cho phép phiên bản sên dưới tiêu đề bài thực sự được gắn với metabox sên. Nó cần nó để làm việc. Vì vậy, loại bỏ metabox sẽ phá vỡ nó.

Giải pháp duy nhất, tôi nghĩ, sẽ là sử dụng javascript hoặc css để ẩn nó. Một cái gì đó như thế này sẽ hoạt động:

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'  );

Cảm ơn nhưng những gì về việc ẩn giá trị "tùy chọn màn hình"?
NetConstructor.com

đây là những gì javascript này sẽ làm
sorich87

Làm thế nào / nơi tôi sẽ thêm mã này chính xác?
NetConstructor.com


2

Cuối cùng tôi chỉ thêm CSS sau vào tệp css mà tôi đang gọi trong tệp tin.php của tôi cho khu vực quản trị:

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

#slugdiv { 
    display: none; 
    }

Điều này đã loại bỏ cả tùy chọn màn hình và metabox trong khi vẫn cho phép tôi chỉnh sửa url dưới tiêu đề.

CẬP NHẬT

Dựa trên câu trả lời do FXFUTURE cung cấp, tôi đã sửa đổi mã của mình bằng cách mở rộng nó và bao gồm các giá trị css cho các tùy chọn màn hình và metabox sên trong khi đảm bảo rằng mã chỉ được đưa vào trang post-new.php và 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'  );

1
Khá cũ, nhưng để tham khảo trong tương lai, có vẻ như những ngày này bạn sẽ phải thêm !importantnó để làm việc.

2

Bạn nên gọi remove_meta_box trong hook add_meta_boxes để nó hoạt động. Nó đã thử nghiệm trên 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' );
}

1

Thay vì chỉnh sửa tệp css của bạn, bạn có thể sử dụng tệp này trong hàm.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'  );

CÂU TRẢ LỜI CHÍNH XÁC! Bạn có mua cơ hội biết cách lừa hệ thống thực sự xóa nội dung thay vì chỉ ẩn nó mà không sử dụng chức năng loại bỏ metabox? Về cơ bản, tôi bị mắc kẹt trong một tình huống mà tôi muốn xóa nó hơn là ẩn nó nhưng khi tôi sử dụng chức năng gỡ bỏ, tôi không thể chỉnh sửa sên khi chỉnh sửa url dưới tiêu đề. Tôi có thể chỉnh sửa nó nhưng khi tôi nhấn lưu, nó sẽ trở lại như trước đây ... Xin vui lòng cho tôi biết
NetConstructor.com

có, bạn nên gọi nó trong hook_meta_boxes. Kiểm tra ví dụ mới nhất.
tolginho
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.