Danh sách các hàm điều kiện hay dùng trong WordPress

Sơ đồ trang

  1. Tags điều kiện hay hàm điều kiện là gì?
  2. Cách Tags điều kiện hoạt động trong WordPress
  3. Danh sách Tags điều kiện WordPress
  4. Các ứng dụng thực tế của Conditional Tags
  5. Mẹo sử dụng nâng cao
  6. Các lỗi thường gặp và cách khắc phục
  7. Kết luận

Tags điều kiện hay hàm điều kiện là gì?

Hàm điều kiện trong WordPress là các hàm có kiểu dữ liệu boolean (đúng/sai) được sử dụng trong các Template Files để thay đổi cách hiển thị nội dung dựa trên các điều kiện mà trang hiện tại đáp ứng. Chúng thông báo cho WordPress biết nên hiển thị đoạn mã nào trong những điều kiện cụ thể.

Có nhiều tags điều kiện cho các khu vực khác nhau trên website của bạn như trang chủ, bài viết, trang, và một số tags điều kiện tùy chỉnh như tags điều kiện WooCommerce. Điều này cho phép bạn thay đổi những gì được hiển thị trên khắp website và các trang của bạn.

Ví dụ, bạn có thể thay đổi logo website ở các khu vực khác nhau bằng cách sử dụng tags điều kiện.

Cách Tags điều kiện hoạt động trong WordPress

Mã bắt đầu bằng việc kiểm tra xem một điều kiện có đúng hay sai. Nếu điều kiện được xác định là đúng, đoạn mã đầu tiên sẽ được thực thi. Nếu sai, đoạn mã đầu tiên sẽ bị bỏ qua và đoạn mã thứ hai (sau else) sẽ được thực thi. Những tags này có thể được kết hợp với câu lệnh “if” trong PHP để thực thi mã theo điều kiện.

Danh sách Tags điều kiện WordPress

is_front_page

Xác định liệu truy vấn có phải là cho trang chủ của website hay không.

if ( is_front_page() ) :
    // đúng là trang chủ
else :
    // nếu không phải trang chủ
endif;

is_home

Xác định liệu truy vấn có phải là cho trang blog chính hay không.

if ( is_home() ) {
    // Đây là trang hiển thị bài viết blog
    get_sidebar( 'blog' );
} else {
    // Đây không phải trang hiển thị bài viết blog
    get_sidebar();
}

is_admin

Xác định liệu yêu cầu hiện tại có phải cho trang giao diện quản trị hay không.

if ( ! is_admin() ) {
    echo "Bạn đang xem giao diện theme";
} else {
    echo "Bạn đang xem Bảng quản trị WordPress";
}

is_network_admin

Xác định liệu yêu cầu hiện tại có phải cho giao diện quản trị mạng hay không.

if ( is_network_admin() ) {
    echo __( 'Bạn đang xem trang quản trị mạng WordPress', 'textdomain' );
} else {
    echo __( 'Bạn không đang xem trang quản trị mạng WordPress', 'textdomain' );
}

is_admin_bar_showing

Xác định liệu thanh quản trị có nên được hiển thị hay không.

if ( is_admin_bar_showing() ) {
    // thực hiện một điều gì đó
}

is_single

Xác định liệu truy vấn có phải là cho một bài viết đơn lẻ đang tồn tại hay không.

is_single();
// Khi trang bài viết đơn được hiển thị.

is_single('17');
// Khi bài viết có ID 17 được hiển thị.

is_single(17);
// Khi bài viết có ID 17 được hiển thị. Tham số kiểu số nguyên cũng hoạt động.

is_single('Món hầm Ireland');
// Khi bài viết có post_title là "Món hầm Ireland" được hiển thị.

is_single('mon-ham-bo');
// Khi bài viết có post_name (slug) là "mon-ham-bo" được hiển thị.

is_single(array(17,'mon-ham-bo','Món hầm Ireland'));
// Trả về true khi bài viết đơn đang hiển thị là bài viết có ID 17,
// hoặc có post_name là "mon-ham-bo", hoặc có post_title là "Món hầm Ireland".
// Lưu ý: Khả năng sử dụng mảng được thêm vào từ phiên bản 2.5.

is_sticky

Xác định liệu một bài viết có được ghim hay không.

is_sticky();
// Khi bất kỳ trang Bài viết ghim nào được hiển thị.

is_sticky('17');
// Khi Bài viết ghim có ID 17 được hiển thị.

is_post_type_hierarchical

Xác định liệu loại bài viết có phân cấp hay không.

is_post_type_archive

Xác định liệu truy vấn có phải là cho một trang lưu trữ loại bài viết đang tồn tại hay không.

<?php if ( is_post_type_archive() ) { ?>
<h1><?php post_type_archive_title(); ?></h1>
<?php } ?>

<?php
function my_function( $query ){
    if ( is_post_type_archive( 'my_custom_post_type' ) ) {
         // Làm điều gì đó
    }
}
add_action( 'pre_get_posts', 'my_function' );
?>

comments_open

Xác định liệu bài viết hiện tại có mở cho bình luận hay không.

/**
 * Enqueue wpdocs_script nếu đang xem bài viết với bình luận được bật.
 */
function wpdocs_scripts(){
    if ( is_single() && comments_open() ) {
        // wpdocs_script phải được đăng ký trước đó thông qua wp_register_script()
        wp_enqueue_script( 'wpdocs_script' );
    }
}
add_action( 'wp_print_scripts', 'wpdocs_scripts' );

pings_open

Xác định liệu bài viết hiện tại có mở cho pings hay không.

is_page

Xác định liệu truy vấn có phải là cho một trang đơn lẻ đang tồn tại hay không.

// Khi bất kỳ Trang đơn nào được hiển thị.
is_page();
 
// Khi Trang có ID 42 được hiển thị.
is_page( 42 );

// Khi Trang có post_title là "Liên hệ" được hiển thị.
is_page( 'Liên hệ' );

// Khi Trang có post_name (slug) là "gioi-thieu" được hiển thị.
is_page( 'gioi-thieu' );

/*
 * Trả về true khi Trang được hiển thị có ID 42,
 * hoặc post_name là "gioi-thieu", hoặc post_title là "Liên hệ".
 * Lưu ý: Khả năng sử dụng mảng được thêm vào từ phiên bản 2.5.
 */
is_page( array( 42, 'gioi-thieu', 'Liên hệ' ) );

is_page_template

Xác định liệu hiện tại đang ở trong một template trang hay không.

if ( is_page_template( 'about.php' ) ) {
    // about.php đang được sử dụng
} else {
    // about.php không được sử dụng
}

if ( is_page_template( 'directory-name/page-about.php' ) ) {
    // about.php đang được sử dụng
} else {
    // about.php không được sử dụng
}

if ( is_page_template( array( 'template-full-width.php', 'template-product-offers.php' ) ) ) {
   // Làm điều gì đó nếu một trong các template trên đang được sử dụng
}
else {
   // Ngược lại làm điều này
}

is_category

Xác định liệu truy vấn có phải là cho một trang lưu trữ danh mục đang tồn tại hay không.

is_category();
// Khi bất kỳ trang lưu trữ Danh mục nào được hiển thị.

is_category( '9' );
// Khi trang lưu trữ Danh mục 9 được hiển thị.

is_category( 'Pho mát thơm' );
// Khi trang lưu trữ Danh mục có Tên là "Pho mát thơm" được hiển thị.

is_category( 'pho-mat-xanh' );
// Khi trang lưu trữ Danh mục có Slug là "pho-mat-xanh" được hiển thị.

is_category( array( 9, 'pho-mat-xanh', 'Pho mát thơm' ) );
// Trả về true khi danh mục của bài viết đang hiển thị là term_ID 9,
// hoặc slug "pho-mat-xanh", hoặc tên "Pho mát thơm".
// Lưu ý: Khả năng sử dụng mảng được thêm vào từ phiên bản 2.5.

is_tag

Xác định liệu truy vấn có phải là cho một trang lưu trữ thẻ đang tồn tại hay không.

// Khi bất kỳ trang lưu trữ Thẻ nào được hiển thị.
is_tag();

// Khi trang lưu trữ cho Thẻ 30 được hiển thị.
is_tag( '30' );

// Khi trang lưu trữ cho thẻ có Slug là 'cuc-ky' được hiển thị.
is_tag( 'cuc-ky' );

// Khi trang lưu trữ cho thẻ có Tên là 'nhe-nhang' được hiển thị.
is_tag( 'nhe-nhang' );

/*
 * Trả về true khi thẻ của bài viết đang hiển thị là term_ID 30,
 * hoặc slug "cuc-ky", hoặc tên "nhe-nhang". Lưu ý: Khả năng sử dụng mảng được thêm vào
 * từ phiên bản 3.7.
 */
is_tag( array( 30, 'nhe-nhang', 'cuc-ky' ) );

is_tax

Xác định liệu truy vấn có phải là cho một trang lưu trữ taxonomy tùy chỉnh đang tồn tại hay không.

is_tax();
// Khi bất kỳ trang lưu trữ taxonomy tùy chỉnh nào được hiển thị.

is_tax( 'kenh' );
// Khi trang lưu trữ cho taxonomy 'kenh' được hiển thị.

is_tax( 'kenh', 'VTV1' );
// Khi trang lưu trữ cho taxonomy 'kenh' được hiển thị
// và term của taxonomy 'kenh' là 'VTV1'.

has_term

Kiểm tra xem bài viết hiện tại có bất kỳ term nào trong số các term đã cho hay không.

if( has_term( 'jazz', 'the-loai' ) ) {
    // làm điều gì đó
}

term_exists

Xác định liệu một term taxonomy có tồn tại hay không.

$term = term_exists( 'Chưa phân loại', 'category' );
if ( $term !== 0 && $term !== null ) {
    echo __( "Danh mục 'Chưa phân loại' tồn tại!", "textdomain" );
}

is_taxonomy_hierarchical

Xác định liệu đối tượng taxonomy có phân cấp hay không.

taxonomy_exists

Xác định liệu tên taxonomy có tồn tại hay không.

$taxonomy_exist = taxonomy_exists( 'category' );
// Trả về true

$taxonomy_exist = taxonomy_exists( 'post_tag' );
// Trả về true

$taxonomy_exist = taxonomy_exists( 'link_category' );
// Trả về true

$taxonomy_exist = taxonomy_exists( 'my_taxonomy' );
// Trả về false nếu global $wp_taxonomies['my_taxonomy'] không được thiết lập

is_author

Xác định liệu truy vấn có phải là cho một trang lưu trữ tác giả đang tồn tại hay không.

is_author();
// Khi bất kỳ trang Tác giả nào được hiển thị.

is_author('4');
// Khi trang lưu trữ cho Tác giả số (ID) 4 được hiển thị.

is_author('Vivian');
// Khi trang lưu trữ cho Tác giả có biệt danh "Vivian" được hiển thị.

is_author('john-jones');
// Khi trang lưu trữ cho Tác giả có Nicename "john-jones" được hiển thị.

is_author(array(4,'john-jones','Vivian'));
// Khi trang lưu trữ cho tác giả là user ID 4, hoặc user_nicename "john-jones",
// hoặc biệt danh "Vivian". Lưu ý: Khả năng sử dụng mảng được thêm vào từ phiên bản 2.5.

Các điều kiện liên quan đến thời gian

is_date

Xác định liệu truy vấn có phải là cho một trang lưu trữ ngày đang tồn tại hay không.

if ( is_date() ) {
    // Làm điều gì đó tuyệt vời.
}

is_year

Xác định liệu truy vấn có phải là cho một trang lưu trữ năm đang tồn tại hay không.

if ( is_year() ) {
    // Làm điều gì đó tuyệt vời.
}

is_month

Xác định liệu truy vấn có phải là cho một trang lưu trữ tháng đang tồn tại hay không.

if ( is_month() ) {
    // Làm điều gì đó tuyệt vời.
}

is_day

Xác định liệu truy vấn có phải là cho một trang lưu trữ ngày đang tồn tại hay không.

if ( is_day() ) {
    // Làm điều gì đó tuyệt vời.
}

is_time

Xác định liệu truy vấn có phải là cho một thời gian cụ thể hay không.

if ( is_time() ) {
    // Làm điều gì đó tuyệt vời.
}

is_new_day

Xác định liệu ngày xuất bản của bài viết hiện tại trong vòng lặp có khác với ngày xuất bản của bài viết trước đó trong vòng lặp hay không.

is_archive

Xác định liệu truy vấn có phải là cho một trang lưu trữ đang tồn tại hay không.

if(is_archive())
    // viết mã của bạn tại đây ...

Xác định liệu truy vấn có phải là cho một tìm kiếm hay không.

if ( is_search() ) {
    // thêm form tìm kiếm bên ngoài (Google, Yahoo, Bing...)
}

is_404

Xác định liệu truy vấn có dẫn đến lỗi 404 (không trả về kết quả) hay không.

if ( is_404() ) {
    // thêm form tìm kiếm để người dùng có thể tìm kiếm các bài viết khác
}

is_paged

Xác định liệu truy vấn có phải là cho một kết quả được phân trang và không phải cho trang đầu tiên hay không.

is_attachment

Xác định liệu truy vấn có phải là cho một trang đính kèm đang tồn tại hay không.

if ( is_attachment() ) {
    // hiển thị quảng cáo #1
} else {
    // hiển thị quảng cáo #2
}

wp_attachment_is_image

Xác định liệu một file đính kèm có phải là hình ảnh hay không.

$id = 37;
if ( wp_attachment_is_image( $id ) ) {
    printf( 'Bài viết %d là một hình ảnh!', $id );
} else {
    printf( 'Bài viết %d không phải là hình ảnh.', $id );
}

is_local_attachment

Xác định liệu một URI đính kèm có phải là nội bộ và thực sự là một file đính kèm hay không.

is_singular

Xác định liệu truy vấn có phải là cho một bài viết đơn lẻ đang tồn tại của bất kỳ loại bài viết nào (post, attachment, page, custom post types).

if ( is_singular() ) {
  // hiển thị quảng cáo #1
} else {
  // hiển thị quảng cáo #2
}

is_singular( 'book' );
is_singular( array( 'newspaper', 'book' ) );

post_type_exists

Xác định liệu một loại bài viết có được đăng ký hay không.

$exists = post_type_exists( 'post' );
// trả về true
  
$exists = post_type_exists( 'page' );
// trả về true
  
$exists = post_type_exists( 'book' );
// trả về true nếu book là một loại bài viết đã đăng ký
  
$exists = post_type_exists( 'xyz' );
// trả về false nếu xyz không phải là một loại bài viết đã đăng ký

is_main_query

Xác định liệu truy vấn có phải là truy vấn chính hay không.

/**
 * Nếu truy vấn toàn cục là cho một danh mục, loại trừ danh mục 5.
 *
 * @param WP_Query $query Thể hiện WP_Query toàn cục.
 */
function wpdocs_modify_query_exclude_category( $query ) {
    if ( ! is_admin() && $query->is_main_query() && ! $query->get( 'cat' ) )
        $query->set( 'cat', '-5' );
}
add_action( 'pre_get_posts', 'wpdocs_modify_query_exclude_category' );

is_feed

Xác định liệu truy vấn có phải là cho một feed hay không.

is_trackback

Xác định liệu truy vấn có phải là cho một cuộc gọi endpoint trackback hay không.

is_preview

Xác định liệu truy vấn có phải là cho một bản xem trước bài viết hoặc trang hay không.

function comments_template( $file = '/comments.php', $separate_comments = false ) {
global $wp_query, $withcomments, $post, $wpdb, $id, $comment, $user_login, $user_ID, $user_identity, $overridden_cpage;
if ( ! ( is_single() || is_page() || $withcomments ) || empty( $post ) ) {
    return;
}
if ( is_preview() ) {
    return;
}

in_the_loop

Xác định liệu người gọi có đang trong Vòng lặp hay không.

function wpdocs_modify_single_post_entry_titles( $title ) {
    if ( is_singular( 'post' ) && in_the_loop() ) {
        /* Chỉnh sửa $title */
    }
    return $title;
}
add_filter( 'the_title', 'wpdocs_modify_single_post_entry_titles' );

is_dynamic_sidebar

Xác định liệu thanh bên động có được bật và sử dụng bởi theme hay không.

is_active_sidebar

Xác định liệu một thanh bên có chứa widgets hay không.

<?php if ( is_active_sidebar( 'left-sidebar' ) ) { ?>
    <ul id="sidebar">
        <?php dynamic_sidebar( 'left-sidebar' ); ?>
    </ul>
<?php } ?>

is_active_widget

Xác định liệu một widget đã cho có được hiển thị ở front-end hay không.

is_blog_installed

Xác định liệu WordPress đã được cài đặt hay chưa.

is_rtl

Xác định liệu ngôn ngữ hiện tại có phải là từ phải sang trái (RTL) hay không.

if ( is_rtl() ) {
  wp_enqueue_style(  'style-rtl',  plugins_url( '/css/style-rtl.css', __FILE__ ) );
  wp_enqueue_script( 'script-rtl', plugins_url( '/js/script-rtl.js',  __FILE__ ) );
}

is_multisite

Kiểm tra nếu Multisite được bật.

is_main_site

Xác định liệu một site có phải là site chính của mạng hiện tại hay không.

if ( is_main_site( $blog_id ) ) {
  // hiển thị điều gì đó đặc biệt cho site chính.
}

is_super_admin

Xác định xem người dùng có phải là admin site hay không.

// Xóa menu "Edit" cho người dùng không phải là Super Admins của mạng multisite
if ( ! is_super_admin() ) {
    add_action( 'admin_init', 'wpdocs_remove_edit_menu' );
}
/**
 * Xóa liên kết chỉnh sửa hồ sơ cho người dùng không phải super admin.
 */
function wpdocs_remove_edit_menu() {
    remove_menu_page('edit.php');
}

is_user_logged_in

Xác định liệu khách truy cập hiện tại có phải là người dùng đã đăng nhập hay không.

if ( is_user_logged_in() ) {
    echo 'Chào mừng, người dùng đã đăng ký!';
} else {
    echo 'Chào mừng, khách truy cập!';
}

email_exists

Xác định liệu email đã cho có tồn tại hay không.

$email = 'myemail@example.com';
$exists = email_exists( $email );
if ( $exists ) {
    echo "Email đó đã được đăng ký cho người dùng số " . $exists;
} else {
    echo "Email đó không thuộc về bất kỳ người dùng đã đăng ký nào trên site này";
}

username_exists

Xác định liệu tên người dùng đã cho có tồn tại hay không.

$username = sanitize_user( $_POST['username'] );
if ( username_exists( $username ) ) {
    echo "Tên người dùng đang được sử dụng!";
} else {
    echo "Tên người dùng chưa được sử dụng!";
}

is_plugin_active

Xác định liệu một plugin có đang hoạt động hay không.

/**
 * Phát hiện plugin. Chỉ để sử dụng trên Front End.
 */
include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
// kiểm tra plugin bằng cách sử dụng tên plugin
if ( is_plugin_active( 'plugin-directory/plugin-file.php' ) ) {
    //plugin đã được kích hoạt
} 

is_plugin_inactive

Xác định liệu plugin có không hoạt động hay không.

if ( ! function_exists( 'is_plugin_inactive' ) ) {
    require_once( ABSPATH . '/wp-admin/includes/plugin.php' );
}
if ( is_plugin_inactive( 'plugin-directory/plugin-file.php' ) ) {
    //plugin không được kích hoạt
}

is_plugin_active_for_network

Xác định liệu plugin có đang hoạt động cho toàn bộ mạng hay không.

if ( ! function_exists( 'is_plugin_active_for_network' ) ) {
    require_once( ABSPATH . '/wp-admin/includes/plugin.php' );
}
if ( is_plugin_active_for_network( 'plugin-directory/plugin-file.php' ) ) {
    // Plugin đã được kích hoạt
}

is_child_theme

Xác định liệu một child theme có đang được sử dụng hay không.

current_theme_supports

Kiểm tra sự hỗ trợ của theme cho một tính năng đã cho.

if (current_theme_supports('custom-header')) {
  // làm điều gì đó đặc biệt khi custom-header được hỗ trợ...
}

has_post_thumbnail

Xác định liệu một bài viết có hình ảnh đính kèm hay không.

if ( has_post_thumbnail() ) {
    the_post_thumbnail();
}
else {
    echo '<img src="' . get_bloginfo( 'stylesheet_directory' ) 
        . '/images/thumbnail-default.jpg" />';
}

wp_script_is

Xác định liệu một script đã được thêm vào hàng đợi hay chưa.

$handle = 'fluidVids.js';
$list = 'enqueued';
if (wp_script_is( $handle, $list )) {
    return;
} else {
    wp_register_script( 'fluidVids.js', plugin_dir_url(__FILE__).'js/fluidvids.min.js');
    wp_enqueue_script( 'fluidVids.js' );
}

is_privacy_policy

Xác định liệu truy vấn có phải là cho trang Chính sách quyền riêng tư hay không.

has_excerpt

Xác định liệu bài viết có đoạn trích tùy chỉnh hay không.

if ( ! has_excerpt() ) {
    echo '';
} else { 
    the_excerpt();
}

// Lấy $post nếu bạn đang ở trong một hàm.
global $post;
 
if ( has_excerpt( $post->ID ) ) {
    // Bài viết này có đoạn trích.
} else {
    // Bài viết này không có đoạn trích.
}

has_nav_menu

Xác định liệu một vị trí menu đã đăng ký có menu được gán cho nó hay không.

if ( has_nav_menu( 'primary' ) ) {
    wp_nav_menu( array( 'theme_location' => 'primary' ) );
}

Các ứng dụng thực tế của Conditional Tags

1. Tùy chỉnh menu theo từng trang

function custom_menu_by_page() {
    if (is_front_page()) {
        wp_nav_menu(array('theme_location' => 'home_menu'));
    } elseif (is_page('gioi-thieu')) {
        wp_nav_menu(array('theme_location' => 'about_menu'));
    } elseif (is_singular('product')) {
        wp_nav_menu(array('theme_location' => 'product_menu'));
    } else {
        wp_nav_menu(array('theme_location' => 'primary_menu'));
    }
}

2. Hiển thị nội dung khác nhau cho người dùng đã đăng nhập và chưa đăng nhập

function display_user_specific_content() {
    if (is_user_logged_in()) {
        // Hiển thị nội dung đặc biệt cho người dùng đã đăng nhập
        echo '<div class="member-content">';
        echo '<h3>Chào mừng thành viên!</h3>';
        echo '<p>Đây là nội dung đặc biệt chỉ dành cho thành viên đã đăng nhập.</p>';
        echo '</div>';
    } else {
        // Hiển thị thông báo đăng nhập cho khách
        echo '<div class="guest-content">';
        echo '<h3>Chào khách!</h3>';
        echo '<p>Vui lòng <a href="' . wp_login_url() . '">đăng nhập</a> để xem nội dung đặc biệt.</p>';
        echo '</div>';
    }
}

3. Thêm CSS khác nhau cho từng loại trang

function add_conditional_styles() {
    if (is_single()) {
        wp_enqueue_style('single-post-style', get_template_directory_uri() . '/css/single-post.css');
    } elseif (is_page()) {
        wp_enqueue_style('page-style', get_template_directory_uri() . '/css/page.css');
    } elseif (is_archive()) {
        wp_enqueue_style('archive-style', get_template_directory_uri() . '/css/archive.css');
    }
}
add_action('wp_enqueue_scripts', 'add_conditional_styles');
function custom_footer_by_page() {
    if (is_front_page()) {
        get_template_part('template-parts/footer', 'home');
    } elseif (is_page('lien-he')) {
        get_template_part('template-parts/footer', 'contact');
    } elseif (is_single()) {
        get_template_part('template-parts/footer', 'post');
    } else {
        get_template_part('template-parts/footer', 'default');
    }
}

5. Hiển thị bài viết liên quan chỉ trong các bài viết đơn

function display_related_posts() {
    if (is_single() && !is_attachment()) {
        // Mã để hiển thị bài viết liên quan
        echo '<div class="related-posts">';
        echo '<h3>Bài viết liên quan</h3>';
        // Mã truy vấn bài viết liên quan
        echo '</div>';
    }
}

Mẹo sử dụng nâng cao

Kết hợp nhiều điều kiện

Bạn có thể kết hợp nhiều conditional tags để tạo ra các điều kiện phức tạp:

if (is_single() && !is_admin() && has_post_thumbnail()) {
    // Chỉ thực hiện khi đang ở trang bài viết đơn (không phải trang admin) và bài viết có ảnh đại diện
    echo 'Đây là bài viết có ảnh đại diện!';
}

Tạo Conditional Tags tùy chỉnh

Bạn có thể tạo các conditional tags của riêng mình để sử dụng trong theme:

function is_custom_post_type($type) {
    global $post;
    if ($post && $post->post_type == $type) {
        return true;
    }
    return false;
}

// Sử dụng:
if (is_custom_post_type('san-pham')) {
    // Thực hiện điều gì đó cho post type "san-pham"
}

Kiểm tra trang con (subpage)

function is_tree($pid) {
    global $post;
    if (is_page() && ($post->post_parent == $pid || is_page($pid))) {
        return true;
    }
    return false;
}

// Sử dụng:
if (is_tree(123)) {
    // Thực hiện điều gì đó cho trang 123 hoặc bất kỳ trang con nào của nó
}

Kiểm tra trang danh mục con

function is_subcategory() {
    $cat = get_query_var('cat');
    $category = get_category($cat);
    if ($category->parent == 0) {
        return false; // Là danh mục gốc
    } else {
        return true; // Là danh mục con
    }
}

// Sử dụng:
if (is_category() && is_subcategory()) {
    echo 'Đây là danh mục con!';
}

Kiểm tra loại thiết bị truy cập

Kết hợp với các plugin phát hiện thiết bị di động:

// Giả sử bạn đang sử dụng một plugin phát hiện thiết bị di động
if (is_single() && function_exists('is_mobile') && is_mobile()) {
    // Điều chỉnh nội dung cho người dùng di động
    echo 'Bạn đang xem bài viết trên thiết bị di động!';
}

Các lỗi thường gặp và cách khắc phục

1. Sử dụng conditional tags quá sớm

Conditional tags chỉ hoạt động sau khi WordPress đã thiết lập truy vấn chính. Sử dụng chúng quá sớm (ví dụ: trong các hooks sớm như plugins_loaded) sẽ không hoạt động.

Khắc phục: Sử dụng conditional tags trong các hooks muộn hơn như wp, template_redirect hoặc wp_head.

2. Không kiểm tra tính sẵn có của hàm

Một số conditional tags chỉ được tải trong admin area, và việc sử dụng chúng trong front-end mà không kiểm tra có thể gây lỗi.

Khắc phục: Luôn kiểm tra trước khi sử dụng:

if (function_exists('is_plugin_active') && is_plugin_active('my-plugin/my-plugin.php')) {
    // Thực hiện điều gì đó
}

3. Sử dụng các điều kiện quá phức tạp

Nếu sử dụng quá nhiều conditional tags lồng nhau, mã của bạn có thể trở nên khó đọc và duy trì.

Khắc phục: Tạo các hàm helper để đơn giản hóa logic:

function should_display_special_banner() {
    return is_front_page() && !is_user_logged_in() && !is_admin() && !wp_is_mobile();
}

// Sau đó sử dụng:
if (should_display_special_banner()) {
    // Hiển thị banner đặc biệt
}

Kết luận

Các tags điều kiện là công cụ mạnh mẽ trong kho vũ khí của nhà . Chúng cho phép bạn tạo ra các trải nghiệm trang web động, phản hồi theo ngữ cảnh, và tùy chỉnh nội dung cho người dùng dựa trên nhiều điều kiện khác nhau.

Bằng cách nắm vững và áp dụng đúng cách các conditional tags, bạn có thể:

  1. Tạo các giao diện người dùng linh hoạt và thông minh
  2. Tăng hiệu suất bằng cách chỉ tải các tài nguyên khi cần thiết
  3. Cá nhân hóa trải nghiệm người dùng dựa trên các yếu tố như vai trò, lịch sử, và thiết bị
  4. Giải quyết các trường hợp cạnh và ngoại lệ trong theme hoặc plugin của bạn

Khi xây dựng các giải pháp WordPress, hãy luôn xem xét các conditional tags có sẵn trước khi triển khai các giải pháp tùy chỉnh phức tạp.

WordPress đã cung cấp hầu hết các công cụ mà bạn cần để xử lý các trường hợp sử dụng phổ biến.

5/5 - (11 votes)

donate Nếu bạn thấy bài viết có ích bạn có thể donate cho team hoặc chia sẻ bài viết này. Ngoài ra bạn có thể yêu cầu thêm bài viết tại đây
vutruso

Vũ Trụ Số chuyên cung cấp hosting cho WordPress, dịch vụ thiết kế website, quản trị website cho doanh nghiệp, dịch vụ quảng cáo Google, quảng cáo Facebook, các dịch vụ bảo mật website WordPress, tăng tốc website WordPress

Bài viết liên quan