Tự tạo shortcode cho website wordpress không cần cài plugins

Tự tạo shortcode cho website wordpress không cần cài plugin

Shortcode là gì?

Shortcode dịch theo đúng Tiếng Việt nghĩa là Code ngắn hay nói cách khác là một đoạn code ngắn. Đoạn code ngắn này sẽ thực thi những tác vụ gì đó mà bạn đã định sẵn trong lúc tạo shortcode. Ví dụ như bạn muốn hiển thì một danh sách bài viết theo chuyên mục, theo tag,v.v..

Bây giờ shortcode được sử dụng khá phổ biến, bạn có thể vào thư viện plugin WordPress và tìm plugin với từ khóa shortcode ra là có rất nhiều plugin hỗ trợ bạn sẵn một số shortcode đủ yêu cầu, nào là trang trí bài viết, nào là làm các công việc phức tạp hơn. Và trong nhiều theme, nó cũng có thể hỗ trợ sẵn một vài shortcode của nó.

Tự tạo shortcode cho website wordpress không cần cài plugin

Việc sử dụng plugin khá đơn giản các bạn chỉ việc tìm và cài đặt 1 plugin mình ưng ý là được. Tuy nhiên các plugin này lại có nhều tính năng, đôi khi thừa vì bạn không sử dụng hết, làm nặng website và hơn nữa giảm tính bảo mật của website. Vì vậy chúng ta nên tự tạo shortcode theo nhu cầu của mình

Cách tạo shortcode

Ở hướng dẫn này các hàm shortcode được viết trong file functions.php

Để tạo một shortcode ta sẽ bao gồm 2 bước chính:

  1. Thiết lập function thực thi code trong shortcode.
  2. Tạo một tên shortcode dựa vào function đã tạo cho nó.

Một mẫu shortcode cơ bản

[php]
//Khởi tạo function cho shortcode
function create_shortcode() {
echo "Hello World!";
}
//Tạo shortcode tên là [test_shortcode] và sẽ thực thi code từ function create_shortcode /
add_shortcode( ‘test_shortcode’, ‘create_shortcode’ );
[/php]

Và nếu bạn viết [test_shortcode] vào nội dung bài viết ở đâu thì nó sẽ hiển thị cụm từ Hello World! ở vị trí đó khi xem bài viết.

Tương tự, shortcode dưới đây hiể thị 10 bài viết ngẫu nhiên

[php]
function create_shortcode_randompost() {
$random_query = new WP_Query(array(
‘posts_per_page’ => 10,
‘orderby’ => ‘rand’
));
ob_start();
if ( $random_query->have_posts() ) :
"
<ol>";
while ( $random_query->have_posts() ) :
$random_query->the_post();?>
<li><a href="<?php the_permalink(); ?>">
<h5><?php the_title(); ?></h5>

</a></li>
<?php endwhile;
"</ol>
";
endif;
$list_post = ob_get_contents(); //Lấy toàn bộ nội dung phía trên bỏ vào biến $list_post để return
ob_end_clean();
return $list_post;
}
add_shortcode(‘random_post’, ‘create_shortcode_randompost’);
[/php]

Ở đoạn code trên có dùng hàm ob_start() và ob_end_clean(). Mục đích là sẽ wrap phần nội dung ở giữa hai hàm lại để dùng hàm ob_get_contents() đưa vào biến $list_post, sau đó là return cái biến $list_post này ra. Shortcode phải dùng return để trả về giá trị nếu không khi chèn vào post sẽ bị hiển thị sai.

Tạo shortcode sử dụng tham số

Ở phần trước chúng ta chỉ tìm hiểu qua cách tạo một shortcode đơn giản, nghĩa là nó chỉ hiển thị y chang những gì ta đã viết vào shortcode mà không cho phép chỉnh lại theo ý muốn của người sử dụng. Nếu bạn muốn cho người dùng có thể tự sửa lại những gì hiển thị ra thì ở đây chúng ta phải sử dụng các tham số.

một ví dụ có sử dụng biến $content

[php]
function create_shortcode_content($args, $content) {
return strtoupper($content); //In hoa toàn bộ content trong shortcode
}
add_shortcode(‘shortcode_content’, ‘create_shortcode_content’);
[/php]

Đây là cách bạn dùng shortcode để chuyển nội dung sang chữ in hoa

[shortcode_content]

Nội dung cần in hoa

[/shortcode_content]

Cách viết shortcode vào file PHP

Shortcode chỉ thực thi trong trình soạn thảo của WordPress thôi chứ ở các hoàn cảnh khác nó không hiểu. Do đó nếu bạn muốn chèn shortcode vào một file PHP thì phải sử dụng hàm do_shortcode() để nó thực thi. Ví dụ như sau:

<?php echo do_shortcode('[test_shortcode]'); ?>

Cách viết shortcode vào widget Text

Mặc định widget Text sẽ không cho bạn chèn shortcode vào, nếu muốn nó thực thi thì bạn chỉ cần filter lại nó là xong. Chèn đoạn sau vào file functions.php

add_filter('widget_text', 'do_shortcode');

Tạo shortcode hiển thì bài viết theo Tag

Dưới đây là ví dụ mình tạo shortcode hiển thị bài viết theo “Tag”

[php]
function create_shortcode_tag() {
$tags = wp_get_post_tags(get_the_ID());
if ($tags){
echo ‘

<div id="tagpost">
‘;
$tag_ids = array();
foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id;
$args=array(
‘tag__in’ => $tag_ids,
‘post__not_in’ => array(get_the_ID()),
‘posts_per_page’ => 5,
);
ob_start();
$my_query = new wp_query($args);
if( $my_query->have_posts() ):
echo ‘

<ul>’;
while ($my_query->have_posts()):$my_query->the_post();
?>

<li><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></li>

<?php
endwhile;
echo ‘</ul>

‘;
endif;
wp_reset_query();
echo ‘</div>

‘;
$list_post = ob_get_contents(); //Lấy toàn bộ nội dung phía trên bỏ vào biến $list_post để return
ob_end_clean();
return $list_post;
}
}
add_shortcode(‘post_tag’, ‘create_shortcode_tag’);
[/php]

khi các bạn muốn hiển thị danh sách bài viết liên quan theo Tag thì các bạn chèn nội dung [post_tag] tại nơi bạn muốn hiển thị trong bài viết.

Ví dụ của mình

Trên đây là cách để bạn tạo một shortcode cho wesite của mình, chúc các bạn thành công.

Nguồn: ThachPham

Nếu bạn thấy hữu ích hãy chia sẻ cho mọi người.