Các đoạn code hay dùng cho file function.php của theme wordpress (P1)

File functions.php được hiểu là một file thực hiện một số hàm đặc biệt được thêm vào trong theme để coder build những chức năng theo yêu cầu. Từ cơ bản như tạo sidebar, menu, thêm size ảnh cho đến các bước phức tạp khác thì bạn bắt buộc làm trong file functions.php này mà không thể làm ở một file nào khác.

Dưới đây mình xin giới thiệu một số đoạn code hay dùng cho function.php, bạn có thể tham khảo.

Hướng dẫn thêm code vào file functions.php

Để có thể sửa được file này các bạn có thể vào host bằng FTP rồi vào thư mục của theme để mở file functions.php ra. Hoặc cách gọn lẹ, ít xảy ra lỗi là vào Appearance -> Editor và tìm file functions.php.

Trong file functions.php này sẽ không bao giờ có thẻ đóng ?> ở cuối, vì vậy tốt nhất các bạn cứ chèn code vào cuối file. Trường hợp cá biệt có thêm ?> ở cuối thì chèn nó bên trên thẻ đó.

Nào, bây giờ chúng ta cùng thử chèn một vài code xem thế nào nhé.

Note: Hãy backup file functions.php trước khi thay đổi nhé!

Chế độ bảo trì nhanh

Đôi lúc bạn muốn ngừng trang web của bạn lại để bảo dưỡng. Có rất nhiều WordPress plugin giúp bạn thực hiện công việc này, tuy nhiên nếu bạn không muốn sử dụng plugin, hãy thêm đoạn code dưới đây vào trong tập tin function.php của WordPress Theme mà bạn đang sử dụng. Tác dụng đoạn code này là khách truy cập sẽ hiện thông báo bảo trì, chỉ có quản trị viên mới có thể xem được website.

 

<br />
function bbit_che_do_bao_tri()<br />
{<br />
    if (!current_user_can('edit_themes') || !is_user_logged_in()) {<br />
        wp_die('Trang web tạm thời đang được bảo trì. Xin vui lòng quay trở lại sau.');<br />
    }<br />
}<br />
add_action('get_header', 'bbit_che_do_bao_tri');<br />

Chống spam link comment

Để tránh bị spam liên kết trong phản hồi, bạn chỉ cần vô hiệu hóa chức năng autolink của WordPress, hãy thêm đoạn code dưới đây vào trong tập tin function.php của WordPress Theme mà bạn đang sử dụng:

remove_filter('comment_text', 'make_clickable', 9);

Thêm hình thu nhỏ vào trong RSS feed cho mỗi bài viết

Nếu bạn muốn hiển thị hình ảnh thu nhỏ cho mỗi bài viết trong RSS Feed của bạn, chỉ cần thêm đoạn code dưới đây vào trong tập tin function.php của WordPress Theme mà bạn đang sử dụng:

<br />
function bbit_them_hinh_thu_nho_trong_rss($content)<br />
{<br />
    global $post;<br />
    if (has_post_thumbnail($post-&gt;ID)) {<br />
        $content = '&lt;p&gt;' . get_the_post_thumbnail($post-&gt;ID) . '&lt;/p&gt;' . get_the_content();<br />
    }</p>
<p>    return $content;<br />
}<br />
add_filter('the_excerpt_rss', 'bbit_them_hinh_thu_nho_trong_rss');<br />
add_filter('the_content_feed', 'bbit_them_hinh_thu_nho_trong_rss');<br />

Tự động thay thế chữ trong các bài viết của bạn

Nếu bạn muốn thay đổi 1 từ hoặc 1 cụm từ nào đó trong bài viết của bạn, thay vì phải mở từng bài viết một ra xem, tìm kiếm và thay thế thì bạn chỉ cần thêm đoạn code dưới đây vào trong tập tin function.php của WordPress Theme mà bạn đang sử dụng:

function bbit_thay_the_tu($text)<br />
{<br />
    $replace = array(<br />
        'bbit' =&gt; '&lt;a href=&quot;http://bbit.vn&quot;&gt;bbit&lt;/a&gt;',<br />
        'blog' =&gt; '&lt;a href=&quot;#&quot;&gt;youblog&lt;/a&gt;'<br />
    );<br />
    $text    = str_replace(array_keys($replace), $replace, $text);<br />
    return $text;<br />
}</p>
<p>add_filter('the_content', 'bbit_thay_the_tu');<br />
add_filter('the_excerpt', 'bbit_thay_the_tu');

Xóa tự động nén ảnh

Mặc định, WordPress nén các ảnh jpg của bạn khi bạn tải chúng lên trang web của bạn. Việc làm này là hữu dụng vì nó giúp tích kiệm băng thông và thời gian tải trang, nhưng đôi lúc bạn lại muốn hiển thị hình ảnh với chất lượng gốc (đặc biệt là các nhiếp ảnh gia sử dụng WordPress để trưng bày các sản phẩm của họ)
Sao chép và dán đoạn code dưới đây vào trong tập tin function.php của WordPress Theme mà bạn đang sử dụng để xóa bỏ chức năng tự động nén ảnh:

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

Thêm target=’blank’ vào tất cả các liên kết trong trang web

Nếu bạn muốn bạn đọc của mình khi nhấp chuột vào một đường dẫn nào đó trong trang web của bạn đều mở ra tab mới, chỉ cần thêm đoạn code dưới đây vào trong tập tin function.php của WordPress Theme mà bạn đang sử dụng:

function bbit_tu_dong_target_blank($text)<br />
{<br />
    $return = str_replace('&lt;a', '&lt;a target=&quot;_blank&quot;', $text);<br />
    return $return;<br />
}<br />
add_filter('the_content', 'bbit_tu_dong_target_blank');

Thêm rel nofollow cho tất cả link trong bài viết

Việc thêm rel nofollow cho tất cả link trong bài viết có thể giúp cải thiện SEO cho blog của bạn. Việc này hoàn toàn tương tự với thủ thuật ngay trên.

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');

Thêm trường thông tin liên lạc vào trong hồ sơ cá nhân của người dùng

Mặc định WordPress cho phép người dùng thêm AIM vào trong hồ sơ cá nhân của họ, tuy nhiên lại không hỗ trợ Facebook hay Twitter.
Để thêm trường thông tin liên lạc vào trong hồ sơ cá nhân của người dùng, chỉ cần thêm đoạn code dưới đây vào trong tập tin function.php của WordPress Theme mà bạn đang sử dụng:(Đoạn code dưới đây giúp thêm 2 trường thông tin Facebook và Twitter)

function bbit_them_thong_tin_lien_he($user_contactmethods)<br />
{<br />
    $user_contactmethods['twitter']  = 'Twitter Username';<br />
    $user_contactmethods['facebook'] = 'Facebook Username';<br />
    return $user_contactmethods;<br />
}<br />
add_filter('user_contactmethods', 'bbit_them_thong_tin_lien_he');

Giới hạn kí tự cho bài viết hiển thị

//Limit words<br />
function string_limit_words($string, $word_limit)<br />
{<br />
    $words = explode(' ', $string, ($word_limit + 1));<br />
    <br />
    if (count($words) &gt; $word_limit) {<br />
        array_pop($words);<br />
    }<br />
    <br />
    return implode(' ', $words);<br />
}

Sau đó ta sẽ gọi phần giới hạn này ra bằng < ?php echo string_limit_words(get_the_excerpt(), 20); ?>… với 20 là số kí tự hiển thị và lưu ý rằng đoạn mã phải nằm trong vòng lặp.

Tạo bộ đếm view bài viết

function getPostViews($postID) // hàm này dùng để lấy số người đã xem qua bài viết<br />
{<br />
    $count_key = 'post_views_count';<br />
    $count     = get_post_meta($postID, $count_key, true);<br />
    if ($count == '') { // Nếu như lượt xem không có<br />
        delete_post_meta($postID, $count_key);<br />
        add_post_meta($postID, $count_key, '0');<br />
        return &quot;0&quot;; // giá trị trả về bằng 0<br />
    }<br />
    return $count; // Trả về giá trị lượt xem<br />
}<br />
function setPostViews($postID) // hàm này dùng để set và update số lượt người xem bài viết.<br />
{<br />
    $count_key = 'post_views_count';<br />
    $count     = get_post_meta($postID, $count_key, true);<br />
    if ($count == '') {<br />
        $count = 0;<br />
        delete_post_meta($postID, $count_key);<br />
        add_post_meta($postID, $count_key, '0');<br />
    } else {<br />
        $count++; // cộng đồn view<br />
        update_post_meta($postID, $count_key, $count); // update count<br />
    }<br />
}

Sau đó hãy đặt bộ đếm vào trong trang bài viết, page bằng < ?php setPostViews(get_the_ID()); ?> ( nằm trong vòng lặp )

Để get nó ra hãy dùng < ?php echo getPostViews(get_the_ID()); ?> lượt xem ( nằm trong vòng lặp )

Xóa /category/ trong liên kết

function fix_slash($string, $type)<br />
{<br />
    global $wp_rewrite;<br />
    if ($wp_rewrite-&gt;use_trailing_slashes == false) {<br />
        if ($type != 'single' &amp;&amp; $type != 'category')<br />
            return trailingslashit($string);<br />
        <br />
        if ($type == 'single' &amp;&amp; (strpos($string, '.html/') !== false))<br />
            return trailingslashit($string);<br />
        <br />
        if ($type == 'category' &amp;&amp; (strpos($string, 'category') !== false)) {<br />
            $aa_g = str_replace(&quot;/category/&quot;, &quot;/&quot;, $string);<br />
            return trailingslashit($aa_g);<br />
        }<br />
        if ($type == 'category')<br />
            return trailingslashit($string);<br />
    }<br />
    return $string;<br />
}</p>
<p>add_filter('user_trailingslashit', 'fix_slash', 55, 2);

Thêm sidebar

if (function_exists('register_sidebar')) {<br />
    <br />
    register_sidebar(array(<br />
        'name' =&gt; 'Homepage',<br />
        'before_widget' =&gt; '&lt;div id=&quot;%1$s&quot; class=&quot;%2$s homepage-widget clearfix&quot;&gt;',<br />
        'after_widget' =&gt; '&lt;/div&gt;',<br />
        'before_title' =&gt; '&lt;h3&gt;',<br />
        'after_title' =&gt; '&lt;/h3&gt;'<br />
    ));<br />
    <br />
}

và hãy gọi nó bằng đoạn mã tương ứng

<?php if (!function_exists('dynamic_sidebar') || !dynamic_sidebar('Homepage')): endif;?>

Thêm một menu

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

Đoạn mã hiển thị

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

Thêm kích thước ảnh trong WordPress

add_theme_support('post-thumbnails', array('post'));<br />
add_image_size('image', 55, 55, true);

55,55 là kích thước ảnh theo cấu trúc width, height. True hoặc false là drop ảnh hay không

Phân trang

//Pagination<br />
function bbit_pagination($pages = '', $range = 2)<br />
{<br />
    $showitems = ($range * 2) + 1;<br />
    <br />
    global $paged;<br />
    if (empty($paged))<br />
        $paged = 1;<br />
    <br />
    if ($pages == '') {<br />
        global $wp_query;<br />
        $pages = $wp_query-&gt;max_num_pages;<br />
        if (!$pages) {<br />
            $pages = 1;<br />
        }<br />
    }<br />
    <br />
    if (1 != $pages) {<br />
        echo &quot;&lt;div class='pagingNext'&gt;&quot;;<br />
        if ($paged &gt; 2 &amp;&amp; $paged &gt; $range + 1 &amp;&amp; $showitems &lt; $pages)<br />
            echo &quot;&lt;a href='&quot; . get_pagenum_link(1) . &quot;'&gt;&lt;span class='arrows'&gt;&lt;/span&gt; &lt;&lt;&lt;/a&gt;&quot;;<br />
        if ($paged &gt; 1 &amp;&amp; $showitems &lt; $pages)<br />
            echo &quot;&lt;a href='&quot; . get_pagenum_link($paged - 1) . &quot;'&gt;&lt;span class='arrows'&gt;&lt;/span&gt; &lt;&lt;/a&gt;&quot;;<br />
        <br />
        for ($i = 1; $i &lt;= $pages; $i++) {<br />
            if (1 != $pages &amp;&amp; (!($i &gt;= $paged + $range + 1 || $i &lt;= $paged - $range - 1) || $pages &lt;= $showitems)) {<br />
                echo ($paged == $i) ? &quot;&lt;span class='actedPage'&gt;&quot; . $i . &quot;&lt;/span&gt;&quot; : &quot;&lt;a href='&quot; . get_pagenum_link($i) . &quot;' class='inactive' &gt;&quot; . $i . &quot;&lt;/a&gt;&quot;;<br />
            }<br />
        }<br />
        <br />
        if ($paged &lt; $pages &amp;&amp; $showitems &lt; $pages)<br />
            echo &quot;&lt;a href='&quot; . get_pagenum_link($paged + 1) . &quot;'&gt;&gt; &lt;span class='arrows'&gt;&lt;/span&gt;&lt;/a&gt;&quot;;<br />
        if ($paged &lt; $pages - 1 &amp;&amp; $paged + $range - 1 &lt; $pages &amp;&amp; $showitems &lt; $pages)<br />
            echo &quot;&lt;a href='&quot; . get_pagenum_link($pages) . &quot;'&gt;&gt;&gt; &lt;span class='arrows'&gt;&lt;/span&gt;&lt;/a&gt;&quot;;<br />
        echo &quot;&lt;/div&gt;n&quot;;<br />
    }<br />
}

Nơi cần phân trang dán

<?php bbit_pagination($pages = '', $range = 2); ?>

Cho phép author chỉ xem được comment của bài họ viết

Mặc định khi họ vào mục Comments trong WordPress Dashboard, các thành viên có quyền Author vẫn xem được các comment ở tất cả bài viết. Như thế làm họ rất khó quản lý, đoạn code này sẽ giúp họ chỉ xem được các comment có trong bài của họ.

function get_comment_list_by_user($clauses)<br />
{<br />
    if (is_admin()) {<br />
        global $user_ID, $wpdb;<br />
        $clauses['join'] = &quot;, wp_posts&quot;;<br />
        $clauses['where'] .= &quot; AND wp_posts.post_author = &quot; . $user_ID . &quot; AND wp_comments.comment_post_ID = wp_posts.ID&quot;;<br />
    }<br />
    ;<br />
    return $clauses;<br />
}<br />
;<br />
if (!current_user_can('edit_others_posts')) {<br />
    add_filter('comments_clauses', 'get_comment_list_by_user');<br />
}

Giới hạn số từ tối thiểu comment

Một cách để phòng chống spam.

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

Thay số 20 thành số ký tự mà bạn muốn chặn. Nếu ký tự comment thấp hơn số đó thì nó sẽ chặn.

Thêm copyright ngay dưới mỗi bài viết trong RSS Feed

Cách để phòng chống những kẻ copy bài của mình qua RSS Feed bằng cách chèn một link trong bài, ai copy thì sẽ tặng bạn một backlink. Yên tâm đi vì nếu đã lấy bài qua RSS thì toàn tự động thôi.

function feedFilter($query)<br />
{<br />
    if ($query-&gt;is_feed) {<br />
        add_filter('the_content', 'feedContentFilter');<br />
    }<br />
    return $query;<br />
}<br />
add_filter('pre_get_posts', 'feedFilter');</p>
<p>function feedContentFilter($content)<br />
{<br />
    $content .= '&lt;p&gt;Bài viết này thuộc quyền sở hữu của &lt;a href=&quot;https://thachpham.com&quot; rel=&quot;dofollow&quot;&gt;Thach Pham Blog&lt;/a&gt;. &lt;/p&gt;';<br />
    <br />
    return $content;<br />
}

Cho phép viết PHP vào Text Widget

Mặc định Text Widget bạn chỉ cho phép chèn mã HTML và chữ thường vào mà thôi. Sau khi thêm đoạn code sau bạn sẽ có thể thực thi mã PHP vào đó.

function php_text($text)<br />
{<br />
    if (strpos($text, '&lt;' . '?') !== false) {<br />
        ob_start();<br />
        eval('?' . '&gt;' . $text);<br />
        $text = ob_get_contents();<br />
        ob_end_clean();<br />
    }<br />
    return $text;<br />
}<br />
add_filter('widget_text', 'php_text', 99);

Cho phép viết shortcode vào widget

add_filter('widget_text', 'do_shortcode');

Tự in đậm dòng đầu tiên trong bài

function first_paragraph($content)<br />
{<br />
    <br />
    global $post;<br />
    <br />
    if ($post-&gt;post_type == &quot;post&quot;) {<br />
        return preg_replace('/&lt;p([^&gt;]+)?&gt;/', '&amp;lt;p$1 class=&quot;first&quot;&gt;', $content, 1);<br />
    } else {<br />
        return $content;<br />
    }<br />
}<br />
add_filter('the_content', 'first_paragraph');

Sau đó chèn thêm đoạn này vào file style.css

<br />
.first {font-weight: bold}<br />

Đây là những đoạn code mình sưu tầm, nếu bạn đang tìm hiểu thêm chức năng vào wordpress mà không dùng plugin thì những đoạn này rất hữu dụng, mình chưa dùng hết các đoạn code này, cho nên nếu bạn bị lỗi khi dùng nó thì comment ở đây để mọi người cùng nghiên cứu nhé.

Mình cũng sẽ update code mới, các bạn theo dõi ở đây nha.


Lưu ý quan trọngChỉ hỗ trợ kĩ thuật cho thành viên VIP từ gói 06 tháng trở lên qua kênh chat, nếu bạn đăng ký gói VIP khác vui lòng comment vào bài viết vấn đề bạn gặp phải, bạn sẽ nhận được phản hồi trong vòng 48h.

0 0 votes
Article Rating

Mọi Người Cũng Thường Xem

guest
Tất cả comment đều được kiểm duyệt cẩn thận! Hãy dùng tên của bạn khi comment, không sử dụng keyword trong ô Name. Xin cảm ơn.
0 Bình luận
Inline Feedbacks
Xem tất cả bình luận
0
Bạn thấy sao về bài viết này? cho mình biết nhéx