0944 956 636
0944 956 636

Widget Logic – Ẩn hiện Wiget theo điều kiện

Widget là gì?

Trong cấu tạo của 1 trang web chuyên nghiệp, 1 thành phần gần như không thể thiếu đó là các Widget. Đó là các vùng hiển thị bên Phải, Trái, Trên và Dưới của một trang web dùng để thể hiện các thông tin bổ sung: Bài viết mới nhất, Bình luận mới nhất, Thông tin liên hệ, Quảng cáo…

Các hiển thị Wiget theo điều kiện

Khi thiết kế Website chuyên nghiệp với IT24 tại Thanh Hóa, các bạn có thể chọn thiết kế kiểu Wesbite toàn màn hình (không có các Widgets 2 bên chỉ có trên, dưới) hoặc có cột các Widgets bên Phải hoặc Trái. Khi đăng ký thiết kế website tại IT24 các bạn vui lòng ghi chú thêm thông tin này hoặc điện Hotline của chúng tôi 082.222.2424 để được tư vấn.

Qua bài viết này, mình sẽ hướng dẫn các bạn có thể tùy chọn ẩn, hiện các Widgets theo điều kiện. Ví dụ: chỉ hiện ở trang bài viết không hiện trang chủ…

This plugin gives every widget an extra control field called “Widget logic” that lets you control the pages that the widget will appear on. The text field lets you use WP’s Conditional Tags, or any general PHP code.

PLEASE NOTE The widget logic you introduce is EVAL’d directly. Anyone who has access to edit widget appearance will have the right to add any code, including malicious and possibly destructive functions. There is an optional filter ‘widget_logic_eval_override’ which you can use to bypass the EVAL with your own code if needed. (See Other Notes).

There is also an option to add a wordpress ‘widget_content’ filter — this lets you tweak any widget’s HTML to suit your theme without editing plugins and core code.

If you like and use Widget Logic you could consider a small donation to Cancer Research UK. I have a JustGiving.com donation link. As of February 2017 we have raised 1,048.50 UKP.

The text in the ‘Widget logic’ field can be full PHP code and should return ‘true’ when you need the widget to appear. If there is no ‘return’ in the text, an implicit ‘return’ is added to the start and a ‘;’ is added on the end. (This is just to make single statements like is_home() more convenient.)

Make good use of WP’s own conditional tags. You can vary and combine code using:

! (NOT) to reverse the logic, eg !is_home() is TRUE when this is NOT the home page.
|| (OR) to combine conditions. X OR Y is TRUE when either X is true or Y is true.
&& (AND) to make conditions more specific. X AND Y is TRUE when both X is true and Y is true.
There are lots of great code examples on the WP forums, and on WP sites across the net. But the WP Codex is also full of good examples to adapt, such as Test if post is in a descendent category.

is_home() — just the main blog page
!is_page(‘about’) — everywhere EXCEPT this specific WP ‘page’
!is_user_logged_in() — shown when a user is not logged in
is_category(array(5,9,10,11)) — category page of one of the given category IDs
is_single() && in_category(‘baked-goods’) — single post that’s in the category with this slug
current_user_can(‘level_10’) — admin only widget
strpos($_SERVER[‘HTTP_REFERER’], “google.com”)!=false — widget to show when clicked through from a google search
is_category() && in_array($cat, get_term_children( 5, ‘category’)) — category page that’s a descendent of category 5
global $post; return (in_array(77,get_post_ancestors($post))); — WP page that is a child of page 77
global $post; return (is_page(‘home’) || ($post->post_parent==”13″)); — home page OR the page that’s a child of page 13
Note the extra ‘;’ on the end where there is an explicit ‘return’.

Before the Widget Logic code is evaluated for each widget, the text of the Widget Logic code is passed through this filter. If the filter returns a BOOLEAN result, this is used instead to determine if the widget is visible. Return TRUE for visible.

When this option is active (tick the option tickbox at the foot of the widget admin page) you can modify the text displayed by ANY widget from your own theme’s functions.php file. Hook into the filter with:


Close Menu