Thêm ngắt dòng vào các mục menu điều hướng


8

Tôi cần thêm ngắt dòng cho tiêu đề mục menu. Tôi đã không nhận ra đây là một vấn đề vì khi tôi đăng nhập với tư cách là Quản trị viên Siêu cấp, tôi có thể thêm <br/>tốt, nhưng dường như quản trị viên cấp thường không thể.

Tôi đã đọc qua bài đăng này Menu tùy chỉnh Mô tả Tước các thẻ HTML

nhưng tôi khá tin rằng các thẻ đang bị xóa khi lưu / cập nhật, vì vậy tôi không ngay lập tức thấy cách Custom Walker là giải pháp, nhưng bộ não của tôi đã được bắn khá tốt ngày hôm nay, vì vậy nó có thể rõ ràng.

Dường như cũng không có bất kỳ vệ sinh nào xảy ra trong wp_save_nav_menu_items()hoặc wp_update_nav_menu_item().


Điều này phải dành riêng cho nhiều trang vì quản trị viên trên một trang cài đặt có thể sử dụng <br/>thẻ ... Trong mọi trường hợp, các mục trong menu là loại bài đăng, vì vậy tôi nghĩ rằng việc khử trùng nằm trong sanitize_post_field()(cụ thể title_save_pre- xem nguồn ). Thật không may, không có cách nào để phá vỡ điều đó đối với chỉ tiêu đề menu - vì vậy giải pháp được đăng của bạn có lẽ là tốt nhất.
Stephen Harris

Vâng tôi nghĩ tôi đã nhớ rằng bạn có thể ... vì vậy không bao giờ nhận ra đó là một vấn đề cho đến khi một khách hàng phàn nàn. Cảm ơn các liên kết nguồn.
xe đạp

Câu trả lời:


10

Theo gợi ý từ @Rarst về các nhân vật an toàn, đây là những gì tôi đã làm:

function wpa_105883_menu_title_markup( $title, $id ){
    if ( is_nav_menu_item ( $id ) && ! is_admin() ){
        $title = preg_replace( '/#BR#/', '<br/>', $title );
    }
    return $title;
}
add_filter( 'the_title', 'wpa_105883_menu_title_markup', 10, 2 );

Chỉnh sửa : Cũng theo nhận xét của Rarst, tôi đã thay thế preg_replacebằngstr_ireplace

function wpa_105883_menu_title_markup( $title, $id ){
    if ( is_nav_menu_item ( $id ) ){
        $title = str_ireplace( "#BR#", "<br/>", $title );
    }
    return $title;
}
add_filter( 'the_title', 'wpa_105883_menu_title_markup', 10, 2 );

1
Vì nó không thực sự là biểu thức chính quy, tôi chỉ sử dụng chung chung str_ireplace()để thay thế. Cũng không biết is_nav_menu_item(), tuyệt. :)
Rarst

1
Tôi vừa phát hiện ra is_nav_menu_item()trong khi đọc qua một số mã cho câu hỏi này. Nó cũng mới đối với tôi. Cảm ơn bạn đã giúp đỡ!
xe đạp

Có cách nào để không ảnh hưởng đến tất cả các danh hiệu? Bởi vì điều này ảnh hưởng đến tất cả, ngay cả trong bảng điều khiển.
Jabel Márquez

Chỉ cần kiểm tra rằng nó không phải là is_admin()sau đó.
xe đạp vào

Thật tuyệt, và với "<br class='break' />", bạn có thể làm cho nó phản hồi nhanh.
Henning Fischer

3

Sans biến logic khử trùng từ trong ra ngoài hoặc mã hóa giao diện tùy chỉnh cho nó ... Tôi sẽ chỉ định một số ký tự an toàn cho nó (ví dụ như đường ống |) và thay thế nó bằng thẻ break ở đầu ra.

Nó đi qua the_titlebộ lọc trong walker, chỉ cần thêm và xóa bộ lọc kịp thời để nó không ảnh hưởng đến các tiêu đề ở nơi khác.


Vâng Đó chính xác là những gì tôi vừa khám phá. Tôi đã kết thúc bằng cách sử dụng # BR # như một nhân vật an toàn. Sẽ đăng.
xe đạp

Làm thế nào bạn có thể làm điều đó để không ảnh hưởng đến tất cả các tiêu đề?
Jabel Márquez
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.