Tổng hợp một số hàm hay trong wordpress

9 Likes Comment

Một số bạn muốn biết cách thức thực hiện chính của theme wordpress và chức năng chính của nó nằm ở đâu, thì đây, các hàm trong theme nó là đóng vai trò cực kỳ quan trọng trong một theme wordpress, các hàm này nó nằm trong file function.php , vậy file này nằm đâu ở trong theme??

Làm cách nào để vào được file chức năng của giao diện (function.php)

Tại bảng điều khiển bạn vào Giao diện -> Sửa giao diện -> Chức năng của Giao diện (functions.php)

Như vậy số (3) là vùng chứa các hàm xử lý chung của theme. Lưu ý bạn nên backup trước khi thêm hoặc chỉnh sửa trong vùng này. 

Thường thì có một số theme không có hỗ trợ nhiều các chức năng mà bạn mong muốn, vậy để thực hiện tự tùy chỉnh theo ý mình thì chúng ta cần nắm một số đoạn hàm hay và được sử dụng nhiều. Vì vậy thấy hay nên sưu tầm và chia sẻ cho mọi người

1. Hàm đếm và hiển thị lượt xem:

Hàm này nó cung cấp cho chúng ta một cách nhìn tổng quát về bài đăng, cho chúng ta biết bao nhiêu người xem bài đăng của chúng ta. Rất hữu ích mọi người nhé, mang tính chất tạo cho người đọc sự hiếu kỳ

function tdc_PostViews($post_ID) {
$count_key = 'post_views_count';
$count = get_post_meta($post_ID, $count_key, true);
if($count == ''){
$count = 1;
delete_post_meta($post_ID, $count_key);
add_post_meta($post_ID, $count_key, '1');
return $count . ' Lượt xem';
}else{
$count++;
update_post_meta($post_ID, $count_key, $count);
return $count . ' Lượt xem';
}
}

Để hiển thị trong bài viết ta chèn đoạn sau:

<?php 
if(function_exists('tdc_PostViews'))
{
echo tdc_PostViews(get_the_ID());
}
?>

Để hiển thị trong trang chủ và danh mục bạn cần thêm hàm sau :

function get_PostViews($post_ID){
$count_key = 'post_views_count';
$count = get_post_meta($post_ID, $count_key, true);
return $count;
}

và để hiển thị được cần sử dụng đoạn sau:

<?php 
$views = get_PostViews($post->ID);
if($views!=null) {
echo $views;
}
else{
echo '0';}
?>

Vậy là đã xong, chú ý bạn nên sử dụng đúng các phần để hiển thị chính xác, như ở ngoài trang chủ và trong bài viết, đó chỉ là phần show còn phần chỉnh sửa làm sao hợp với theme thì css mọi người nhé

2. Hàm chặn các truy vấn nguy hiểm:

Mình thấy hay nên chia sẽ hàm này, nó được áp dụng trên các file của hosting nhưng bây giờ chúng ta có thể tùy chỉnh bằng hàm ngay trên wordpress, để chặn các truy vấn nguy hiểm thông qua lỗi SQL Injection trên thanh trình duyệt

global $user_ID; if($user_ID) {
if(!current_user_can('administrator')) {
if (strlen($_SERVER['REQUEST_URI']) > 255 ||
stripos($_SERVER['REQUEST_URI'], "eval(") ||
stripos($_SERVER['REQUEST_URI'], "CONCAT") ||
stripos($_SERVER['REQUEST_URI'], "UNION+SELECT") ||
stripos($_SERVER['REQUEST_URI'], "base64")) {
@header("HTTP/1.1 414 Request-URI Too Long");
@header("Status: 414 Request-URI Too Long");
@header("Connection: Close");
@exit;
}
}
}


3. Bình luận phải đủ ký tự:

Hàm này cũng khá hay bởi có một số phần tử hay spam bằng cách chèn link và comment 1 vài ký tự, hàm này nó cho phép chúng ta định tối thiểu ký tự cần để được bình luận :))

add_filter( 'preprocess_comment', 'minimal_comment_length' );
function minimal_comment_length( $commentdata ) {
$minimalCommentLength = 20;
if ( strlen( trim( $commentdata['comment_content'] ) ) < $minimalCommentLength ){
wp_die( 'All comments must be at least ' . $minimalCommentLength . ' characters long.' );
}
return $commentdata;
}

 

4. Hàm ẩn lỗi đăng nhập trong wordpress:

Hàm này khá hay, nó giúp chúng ta tránh khỏi sự phỏng đoán của tin tặc trong việc cố tình xâm nhập blog của ta với một số lỗi mà wordpress được gọi ra khi đăng nhập với thủ thuật nào đó có thể có được.

function no_wordpress_errors(){
return 'Something is wrong!';
}
add_filter( 'login_errors', 'no_wordpress_errors' );


 

5. Hàm xóa tự động nén ảnh:

Thông thường cơ chế của wordpress nó tự động nén ảnh khi chúng ta upload lên. Để làm điểu này, chất lượng ảnh không thay đổi, ta sử dụng hàm sau:

add_filter('jpeg_quality', function($arg){return 100;});

 

6. Hàm tạo rel nofollow cho tất cả link trong bài viết:

Thuộc tính rel nofollow rất có lợi cho các links nội của trang blog bạn, mình nghĩ vậy, để tạo được thì sử dụng hàm sau.

function bbit_tu_dong_rel($text)<br />
{<br />
$return = str_replace('&lt;a', '&lt;a rel=&quot;nofollow&quot;', $text);<br />
return $return;<br />
}<br />
add_filter('the_content', 'bbit_tu_dong_rel');

 

7. Hàm xóa bỏ /category/ và slug category:

Một số người không thích hiển thị trên address dòng chữ category và các slug cha của nó, thì hàm sau sẽ thực hiện thao tác xóa, khi bạn chép hàm sau vào nhớ cài đặt lại đường dẫn tĩnh (permalink) tại (Settings -> Permalink -> Save change)

// Remove Parent Category from Child Category URL
add_filter('term_link', 'devvn_no_category_parents', 1000, 3);
function devvn_no_category_parents($url, $term, $taxonomy) {
if($taxonomy == 'category'){
$term_nicename = $term->slug;
$url = trailingslashit(get_option( 'home' )) . user_trailingslashit( $term_nicename, 'category' );
}
return $url;
}
// Rewrite url mới
function devvn_no_category_parents_rewrite_rules($flash = false) {
$terms = get_terms( array(
'taxonomy' => 'category',
'post_type' => 'post',
'hide_empty' => false,
));
if($terms && !is_wp_error($terms)){
foreach ($terms as $term){
$term_slug = $term->slug;
add_rewrite_rule($term_slug.'/?$', 'index.php?category_name='.$term_slug,'top');
add_rewrite_rule($term_slug.'/page/([0-9]{1,})/?$', 'index.php?category_name='.$term_slug.'&paged=$matches[1]','top');
add_rewrite_rule($term_slug.'/(?:feed/)?(feed|rdf|rss|rss2|atom)/?$', 'index.php?category_name='.$term_slug.'&feed=$matches[1]','top');
}
}
if ($flash == true)
flush_rewrite_rules(false);
}
add_action('init', 'devvn_no_category_parents_rewrite_rules');_

 

8. Hàm thêm một menu vào wordpress:

Để đăng ký thêm một menu mới ta sử dụng đoàn hàm sau

register_nav_menu( 'menu', __( 'Menu', 'bbit_mobi' ) );

Để hiển thị

<?php wp_nav_menu (array('theme_location' => 'menu'));?>

 

9. Hàm cho phép viết shortcode vào widget trong wordpress:

add_filter('widget_text', 'do_shortcode');

 

10. Hàm thay URL mặc định của Author trong WordPress:

Thường thì mặc định nó sẽ như thế này: /author/abc ->> /tac-gia/abc, sau khi chép hàm dưới lưu bạn nên vào đường dẫn tĩnh để cài đặt lại nhé (Cài đặt -> Đường Dẫn tĩnh -> Lưu thay đổi)

add_action('init', 'thay_url_author_wordpress');
function thay_url_author_wordpress() {
global $wp_rewrite;
$author_slug = 'tac-gia';
$wp_rewrite->author_base = $author_slug;
}

 

[Còn tiếp…]

Bạn có thể thích