• info@fahatech.com
  • (+84) 839 776 779
  • Vietnamese English Japanese
BlogLập trìnhWordpressTổng hợp các hàm thông dụng khi tạo theme WordPress

Tổng hợp các hàm thông dụng khi tạo theme WordPress

  • Fahatech
Tổng hợp các hàm thông dụng khi tạo theme WordPress

Tăng bộ nhớ Php trong WordPress

Đặt trong file wp-config.php

define('WP_MEMORY_LIMIT', '79M');

Khai báo và sử dụng Header trong WordPress

Khai báo trong file header.php, đặt trước thẻ đóng của </head>

<?php wp_head(); ?>

Gọi Header trong các file như page.php, single.php, …

<?php get_header();?>

Gọi Header trong trường hợp có nhiều file ví dụ : header-style-01.php, header-style-02.php

<?php get_header('style-01');?>

 

Khai báo và sử dụng Footer trong WordPress

Khai báo trong file footer.php, đặt trước thẻ đóng của </body>

<?php wp_footer(); ?>

Gọi footer trong các file như page.php, single.php, …

<?php get_footer();?>

Gọi footer trong trường hợp có nhiều file ví dụ : footer-style-01.php, footer-style-02.php

<?php get_footer('style-01');?>

 

Một số hàm hiển thị nội dung trong WordPress

Hiển thị lang của html (Đặt tại thẻ <html>)

<?php language_attributes(); ?>
// Hoặc
<?php bloginfo('language'); ?>

// Vị trí đặt
<html <?php language_attributes(); ?>>
// Hoặc
<html lang="<?php bloginfo('language'); ?>">

Hiển thị charset của meta (Đặt tại thẻ <meta>)

<?php bloginfo( 'charset' ); ?>

// Vị trí đặt
<meta charset="<?php bloginfo( 'charset' ); ?>">

Hiển thị đường dẫn đến thư mục của theme, ví dụ : https://hoangsi.com/wp/wp-content/themes/hoangsi

<?php echo get_template_directory_uri(); ?>
// Hoặc
<?php bloginfo('template_directory'); ?>
// Hoặc
<?php bloginfo('template_url'); ?>

Hiển thị đường dẫn gốc của site (Domain), ví dụ : https://hoangsi.com

<?php bloginfo('home'); ?>

Hiển thị đường dẫn tới thư mục chứa Source wp-admin, ví dụ : https://hoangsi.com/wp

<?php bloginfo('wpurl'); ?>

Hiển thị đường dẫn page trong WordPress

<?php bloginfo('home'); ?>/?page_id=1

Hiển thị id của page hoặc post

<?php echo get_the_ID(); ?>

Hiển thị tiêu đề trong cặp thẻ <title></title>

<?php wp_title(''); ?>

// Thường sử dụng
<?php if(is_front_page()) { bloginfo('name'); } else { wp_title(''); } ?>
// Hooặc
<?php bloginfo('name'); ?> | <?php is_front_page() ? bloginfo('description') : wp_title(''); ?>

Hiển thị tên trang web

<?php bloginfo('name'); ?>

Hiển thị Class trong thẻ <body> (Hàm này rất cần thiết)

<?php body_class(); ?>

// Vị trí đặt
<body class="<?php body_class(); ?>">

Hiển thị tiêu đề của post hoặc page (Đặt trong vòng lặp while)

<?php the_title(); ?>

Hiển thị tiêu đề (Tên term) trong archive.php

<?php echo single_cat_title( '', false  ); ?>

Hiển thị nội dung của post hoặc page (Đặt trong vòng lặp while)

<?php the_content();  ?>

Hiển thị ngày tháng (Ngày tháng lúc bài viết được tạo, đặt trong vòng lặp while), xem định dạng ngày tháng ở https://codex.wordpress.org/Formatting_Date_and_Time

<?php the_time('Y.m.d') ; ?>

Hiển thị đường dẫn đến chi tiết post hoặc page (Đặt trong vòng lặp while)

<?php the_permalink(); ?>

Hiển thị mô tả ngắn của bài viết (Đặt trong vòng lặp while)

<?php the_excerpt(); ?>

Hàm cắt chuỗi

<?php echo mb_strimwidth(get_the_title(), 0, 79, '...'); ?>
// Hoặc
<?php echo wp_trim_words(get_the_title(), 79, '...' ); ?>

Gọi các thành phần con trong WordPress (Giống như Include)

<?php get_template_part( 'part/content', 'search' ); ?>

Hiển thị Thumbnail của post (Đặt trong vòng lặp while)

<?php if ( has_post_thumbnail() ) { ?>
<img src="<?php the_post_thumbnail_url(); ?>" alt="<?php the_title(); ?>">
<?php } ?>

Khai báo page Template (Tạo 1 page Template, ví dụ: page-contact.php, đặt câu khai báo ở đầu file)

<?php /* Template Name: Contact */ ?>

Hiển thị post type của 1 post

<?php echo $post_type = get_post_type( get_the_ID());?>

// Ví dụ thường dùng
<?php $post_type = get_post_type( get_the_ID());?>
<?php if ($post_type == 'post') : get_template_part( 'archive', 'post' ); endif ?>
<?php if ($post_type == 'estate') :  get_template_part( 'archive', 'estate' ); endif;?>

Khắc phục lỗi không canh giữa hình ảnh trong Visual Editor Wordpress

img.alignright { float: right }
img.alignleft { float: left }
img.aligncenter { display: block; margin-left: auto; margin-right: auto }

 

Một số hàm kiểm tra điều kiện (If & Else) trong WordPress

Kiểm tra trang chủ (front-page.php)

<?php if ( is_front_page() {
// 
} ?>

Kiểm tra trang chi tiết (Của kiểu post mặc định, single.php)

<?php if ( is_single() {
// 
} ?>

Kiểm tra trang chi tiết (Của kiểu 1 post type nhất định, ví dụ : single-sample.php)

<?php if ( is_singular('sample') {
// 
} ?>

Kiểm tra trang lưu trữ (Của kiểu post mặc định, archive.php)

<?php if ( is_archive() ) {
    // 
} ?>

Kiểm tra trang lưu trữ (Của kiểu 1 post type nhất định, ví dụ : archive-sample.php)

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

 

 

Vòng lặp hiển thị post, nội dung trong WordPress

Vòng lặp hiển thị post thông thường

<?php $args=array(
'post_type' => 'post',  // Gọi danh sách kiểu post type là post
'orderby' => 'date',  // Sắp xếp theo ngày tháng
'order'   => 'DESC', 
'posts_per_page'=>5 // Số bài viết hiển thị
); $query = new WP_Query( $args); ?>
<?php if ( $query->have_posts() ) : ?>
<?php while ( $query->have_posts() ) : $query->the_post();?>
        <!-- Content -->
            <a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
        <!-- End content -->
    <?php endwhile; ?>
<?php  wp_reset_query(); ?>
<?php  endif; ?>

Vòng lặp hiển thị nội dung thông thường (Đối với page.php, single.php,…)

<?php if ( have_posts() ) :  ?>
<?php while ( have_posts() ) : the_post(); ?>
        <!-- Content -->
            <h2><?php the_title(); ?></h2>
            <?php the_content();  ?>
        <!-- End content -->
    <?php endwhile; ?>
    <?php  wp_reset_query(); ?>
<?php  endif; ?>

 

Vòng lặp hiển thị post có phân trang (Đối với single.php, archive.php) , sử dụng plugin WP-pageNavi

<?php if ( have_posts() ) :  ?>
<?php while ( have_posts() ) : the_post(); ?>
        <!-- Content -->
            <a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
        <!-- End content -->
    <?php endwhile; ?>
    <div class="wrap-pagi">
    <?php wp_pagenavi(); /* Vị trí hiển thị phân trang */ ?>
</div>
    <?php  wp_reset_query(); ?>
<?php  endif; ?>

Vòng lặp hiển thị post có phân trang đối với page Template , sử dụng plugin WP-pageNavi

<?php 
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
$args = array(
'post_type' => 'post', // Gọi danh sách kiểu post type là post
'orderby' => 'date',  // Sắp xếp theo ngày tháng
'order'   => 'DESC', 
'posts_per_page'=>5, // Số bài viết hiển thị
'paged' => $paged
); query_posts($args);?>
   <?php if ( have_posts() ) : ?>
   <?php while ( have_posts() ) : the_post(); ?>
     <!-- Content -->
            <a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
     <!-- End content -->
    <?php endwhile; ?>
<div class="wrap-pagi">
    <?php wp_pagenavi(); /* Vị trí hiển thị phân trang */?> 
</div>
<?php  wp_reset_query(); ?>
<?php  endif; ?>

 

Hiển thị danh sách term (Category, Tags,…) trong WordPress

Hiển thị danh sách term trong WordPress

<?php
   $args_terms = array( 
'taxonomy' => 'category', // tên Taxonomy, mặc định của Bài viết (posts) có 2 Taxonomy là : category và post_tag
'hide_empty' => 0, // hiển thị tất cả các danh mục, kể cả khi không có bài viết
'parent' => 0 // bằng 0 : chỉ hiển thị danh mục cha
); 
$terms = get_terms( $args_terms ); if ( $terms && ! is_wp_error( $terms ) ) : ?>
<?php foreach ( $terms as $term ) { ?>
<a href="<?php echo esc_url(get_term_link($term));?>" id="<?php echo $term->term_id; ?>"><?php echo $term->name; ?></a>
<?php } ?>
<?php endif; ?>

Trường hợp có sử dụng advanced custom fields ở term, thì trong vòng Foreach, gọi như sau:

<?php the_field('field-name', $term->term_id); ?>

 

Trong mảng $args_terms ta có thể truyền vào nhiều thuộc tính, tham khảo ở đây.

Ngoài ra, trong vòng lặp Foreach, ta có thể gọi các thuộc tính sau, ví dụ : $term->name

[term_id] =>
[name] =>
[slug] =>
[term_group] =>
[term_taxonomy_id] =>
[taxonomy] =>
[description] =>
[parent] =>
[count] =>
[filter] =>

 

Trường hợp hiển thị danh sách term trên 1 post nhất định

Trường hợp hiển thị danh sách term trên 1 post nhất định (single.php, single-sample.php, …) trong WordPress (Đặt trong vòng lặp while)

<?php
   $args_terms = array( 
'taxonomy' => 'category', // tên Taxonomy, mặc định của Bài viết (posts) có 2 Taxonomy là : category và post_tag
'hide_empty' => 0, // hiển thị tất cả các danh mục, kể cả khi không có bài viết
'parent' => 0 // bằng 0 : chỉ hiển thị danh mục cha
); 
$terms = get_the_terms( get_the_ID(), $args_terms ); if ( $terms && ! is_wp_error( $terms ) ) : ?>
<?php foreach ( $terms as $term ) { ?>
<a href="<?php echo esc_url(get_term_link($term));?>" id="<?php echo $term->term_id; ?>"><?php echo $term->name; ?></a>
<?php } ?>
<?php endif; ?>

 

Hàm thông dụng của Plugin Advanced custom fields

Cài đặt Plugin Advanced custom fields (Dùng bản Pro để sử dụng đầy đủ chức năng)

Hiển thị nội dung của field thông thường

<?php the_field('field-name'); ?>

Hiển thị nội dung của field thuộc Theme Options

<?php the_field('field-name', 'option'); ?>

 

Hiển thị nội dung field Image

<?php if( get_field('image') ): ?>
<img src="<?php the_field('image'); ?>" alt="***"/>
<?php endif; ?>

 

Hiển thị nội dung của Repeater field

<?php if( have_rows('repeater_field_name') ): while ( have_rows('repeater_field_name') ) : the_row(); ?>
<?php  the_sub_field('sub_field_name'); ?>
<?php  endwhile; else : echo 'No data'; endif; ?>

 

Ajax trong WordPress

Khai báo ở đầu file Ajax

<?php
$parse_uri = explode( 'wp-content', $_SERVER['SCRIPT_FILENAME'] );
require_once( $parse_uri[0] . 'wp-load.php' );
?>

 

BÀI VIẾT LIÊN QUAN