บทความนี้ได้รวบรวมโค้ดสำเร็จรูปที่ใช้บ่อยใน WordPress และช่วยแก้ปัญหาสำหรับหลาย ๆ คน ถึงแม้จะไม่มีความรู้เรื่องโค้ดก็สามารถนำไปใช้ได้ทันที เพียงแค่นำไปวางในไฟล์ functions.php ของธีม อย่างไรก็ตาม อย่าลืมวิธีการใช้โค้ดอย่างปลอดภัย โดยการทดสอบใน local ก่อน หากนำไปใช้บน production แล้วเว็บไซต์มีปัญหา ถือว่าเตือนแล้วนะครับ
สารบัญ

ซ่อน Admin Bar
add_filter('show_admin_bar', '__return_false');
ซ่อน Admin bar เฉพาะคนที่ไม่ใช่ Admin
function hide_admin_bar_for_non_admins() {
// ตรวจสอบว่าผู้ใช้ปัจจุบันไม่ใช่ผู้ดูแลระบบ และไม่ได้อยู่ในหน้าแอดมิน
if (!current_user_can('administrator') && !is_admin()) {
// ซ่อนแถบผู้ดูแลระบบ
show_admin_bar(false);
}
}
add_action('after_setup_theme', 'hide_admin_bar_for_non_admins');

เปลี่ยนโลโก้ที่หน้า Login page
function custom_login_logo() {
?>
<style type="text/css">
#login h1 a {
background-image: url('<?php echo get_stylesheet_directory_uri(); ?>/path/to/your/logo.png');
height: 80px; /* ปรับความสูงตามขนาดโลโก้ */
width: 320px; /* ปรับความกว้างตามขนาดโลโก้ */
background-size: contain; /* ปรับขนาดโลโก้ให้อยู่ในกรอบ */
background-repeat: no-repeat;
padding-bottom: 30px;
}
</style>
<?php
}
add_action('login_enqueue_scripts', 'custom_login_logo');
กำหนดความยาวของ Excerpt
// ฟังก์ชันกำหนดความยาวของ excerpt แบบนับตัวอักษรภาษาไทย
function custom_excerpt_length_in_chars($text, $length = 100) {
if (mb_strlen($text) > $length) {
$text = mb_substr($text, 0, $length) . '...';
}
return $text;
}
// ฟิลเตอร์สำหรับใช้ฟังก์ชันกำหนดความยาวของ excerpt แบบนับตัวอักษร
function apply_custom_excerpt_length($excerpt) {
return custom_excerpt_length_in_chars($excerpt, 100); // เปลี่ยนตัวเลข 100 เป็นจำนวนตัวอักษรที่ต้องการ
}
add_filter('the_excerpt', 'apply_custom_excerpt_length');

ตัดคำ Tag: Category: Archive: Author: นำหน้าออกในหน้า Taxonomy
// ฟังก์ชันเพื่อตัดคำนำหน้าพวก "Tag:", "Archive:", "Category:" ออกจากหัวเรื่อง
function custom_archive_title($title) {
if (is_category()) {
$title = single_cat_title('', false);
} elseif (is_tag()) {
$title = single_tag_title('', false);
} elseif (is_post_type_archive()) {
$title = post_type_archive_title('', false);
} elseif (is_tax()) {
$title = single_term_title('', false);
}
return $title;
}
add_filter('get_the_archive_title', 'custom_archive_title');
ปิดการใช้งาน Gutenberg
add_filter('use_block_editor_for_post', '__return_false', 10);
ตั้งหน้าที่ต้องการ Redirect หลังจากทำการ Login
// เปลี่ยน URL ของโลโก้ในหน้าเข้าสู่ระบบ
function custom_login_logo_url() {
return home_url(); // เปลี่ยนเป็น URL ของเว็บไซต์คุณ
}
add_filter('login_headerurl', 'custom_login_logo_url');
ตั้งหน้าที่ต้องการ Redirect หลังจากทำการ Logout
function custom_logout_redirect() {
return home_url();
}
add_filter('logout_redirect', 'custom_logout_redirect');
เพิ่ม CSS ที่หลังบ้านแบบ inline
// เพิ่ม CSS แบบกำหนดเองในแผงควบคุม Admin
function custom_admin_css() {
echo '<style>
/* Custom CSS ที่ต้องการ */
#wpadminbar { background-color: #23282d; }
.wp-admin #wpwrap { background-color: #f1f1f1; }
</style>';
}
add_action('admin_head', 'custom_admin_css');
ปิดการใช้งาน REST API สำหรับผู้ใช้ที่ไม่ได้ล็อกอิน
add_filter('rest_authentication_errors', function($result) {
if (!empty($result)) {
return $result;
}
if (!is_user_logged_in()) {
return new WP_Error('rest_not_logged_in', 'You are not currently logged in.', array('status' => 401));
}
return $result;
});
ปิดการใช้งาน Feed ทั้งหมด
function disable_feeds() {
wp_die(__('No feed available, please visit our <a href="'. esc_url(home_url('/')) .'">homepage</a>!'));
}
add_action('do_feed', 'disable_feeds', 1);
add_action('do_feed_rdf', 'disable_feeds', 1);
add_action('do_feed_rss', 'disable_feeds', 1);
add_action('do_feed_rss2', 'disable_feeds', 1);
add_action('do_feed_atom', 'disable_feeds', 1);
add_action('do_feed_rss2_comments', 'disable_feeds', 1);
add_action('do_feed_atom_comments', 'disable_feeds', 1);

เพิ่มปุ่มกลับไปด้านบน
function add_back_to_top_button() { ?>
<!-- Back to Top button element -->
<a id="back-to-top" href="#" style="display: none; position: fixed; bottom: 20px; right: 20px; z-index: 100;">⇧</a>
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', function() {
// Function to show/hide the Back to Top button
window.addEventListener('scroll', function() {
if (window.scrollY > 100) {
document.getElementById('back-to-top').style.display = 'block';
} else {
document.getElementById('back-to-top').style.display = 'none';
}
});
// Function to scroll to the top when the button is clicked
document.getElementById('back-to-top').addEventListener('click', function(event) {
event.preventDefault();
window.scrollTo({
top: 0,
behavior: 'smooth'
});
});
});
</script>
<?php }
add_action('wp_footer', 'add_back_to_top_button');
ปิดการใช้งาน Comment
บางธีมจำเป็นต้องลบไฟล์ในเทมเพลตด้วย
// ปิดการใช้งานฟังก์ชันความคิดเห็นสำหรับโพสต์ทั้งหมด
function disable_comments_post_types_support() {
$post_types = get_post_types();
foreach ($post_types as $post_type) {
if (post_type_supports($post_type, 'comments')) {
remove_post_type_support($post_type, 'comments');
remove_post_type_support($post_type, 'trackbacks');
}
}
}
add_action('admin_init', 'disable_comments_post_types_support');
// ปิดการใช้งานเมนูความคิดเห็นในแผงควบคุม
function disable_comments_admin_menu() {
remove_menu_page('edit-comments.php');
}
add_action('admin_menu', 'disable_comments_admin_menu');
// ปิดการใช้งาน Widget ความคิดเห็นในแผงควบคุม
function disable_comments_dashboard() {
remove_meta_box('dashboard_recent_comments', 'dashboard', 'normal');
}
add_action('admin_init', 'disable_comments_dashboard');
// ปิดการใช้งาน Meta Box ความคิดเห็นในหน้าโพสต์
function disable_comments_post_meta_box() {
remove_meta_box('commentstatusdiv', 'post', 'normal');
remove_meta_box('commentsdiv', 'post', 'normal');
}
add_action('admin_menu', 'disable_comments_post_meta_box');
// ปิดการใช้งานฟังก์ชันความคิดเห็นในหน้า
function disable_comments_status() {
return false;
}
add_filter('comments_open', 'disable_comments_status', 20, 2);
add_filter('pings_open', 'disable_comments_status', 20, 2);
// ซ่อนฟิลด์ความคิดเห็นในหน้า
function disable_comments_hide_existing_comments($comments) {
$comments = array();
return $comments;
}
add_filter('comments_array', 'disable_comments_hide_existing_comments', 10, 2);
// ปิดการใช้งาน RSS Feed ของความคิดเห็น
function disable_comments_feed() {
wp_die(__('No feed available, please visit our <a href="'. esc_url(home_url('/')) .'">homepage</a>!'));
}
add_action('do_feed_rss2_comments', 'disable_comments_feed', 1);
add_action('do_feed_atom_comments', 'disable_comments_feed', 1);
// ลบฟังก์ชันความคิดเห็นออกจากแถบ Admin Bar
function disable_comments_admin_bar() {
if (is_admin_bar_showing()) {
remove_action('admin_bar_menu', 'wp_admin_bar_comments_menu', 60);
}
}
add_action('init', 'disable_comments_admin_bar');
ปิดการใช้งาน XML-RPC
add_filter('xmlrpc_enabled', '__return_false');
ปิดการใช้งาน Self Pingbacks
function disable_self_pingbacks(&$links) {
foreach ($links as $l => $link) {
if (0 === strpos($link, home_url())) {
unset($links[$l]);
}
}
}
add_action('pre_ping', 'disable_self_pingbacks');
ติดตั้ง Google Analytic
function add_google_analytics() { ?>
<script async src="https://www.googletagmanager.com/gtag/js?id=YOUR_TRACKING_ID"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'YOUR_TRACKING_ID');
</script>
<?php }
add_action('wp_head', 'add_google_analytics');
ปรับผลการค้นหาให้แสดงค่า Post, Page เท่านั้น
function custom_search_results($query) {
if ($query->is_search && !is_admin()) {
$query->set('post_type', array('post', 'page')); // จำกัดการค้นหาเฉพาะโพสต์และเพจ
}
return $query;
}
add_filter('pre_get_posts', 'custom_search_results');
จำกัดการเข้าถึงแผงควบคุมสำหรับผู้ใช้ที่ไม่ใช่ Admin
function restrict_admin_access() {
if (!current_user_can('administrator') && !wp_doing_ajax()) {
wp_redirect(home_url());
exit;
}
}
add_action('admin_init', 'restrict_admin_access');
ลบเมนู Admin Bar บางรายการ โลโก้ WordPress, การอัพเดท, เพิ่มเนื้อหาใหม่
function remove_admin_bar_items() {
global $wp_admin_bar;
$wp_admin_bar->remove_node('wp-logo'); // ลบโลโก้ WordPress
$wp_admin_bar->remove_node('updates'); // ลบการอัปเดต
$wp_admin_bar->remove_node('new-content'); // ลบเมนูเนื้อหาใหม่
}
add_action('wp_before_admin_bar_render', 'remove_admin_bar_items');

เพิ่มลิงก์ในแถบ Admin Bar ( ใช้เพื่อเป็นเมนูลัด )
function modify_admin_bar() {
global $wp_admin_bar;
$wp_admin_bar->add_menu(array(
'id' => 'custom_link',
'title' => __('Custom Link'),
'href' => 'http://www.example.com'
));
}
add_action('wp_before_admin_bar_render', 'modify_admin_bar');
ปิดการใช้งานอัพเดทอัตโนมัติ
add_filter('automatic_updater_disabled', '__return_true');
add_filter('auto_update_core', '__return_false');
add_filter('auto_update_plugin', '__return_false');
add_filter('auto_update_theme', '__return_false');
ตั้งค่า สื่อที่อัพโหลด ให้เห็นได้แค่ เฉพาะของตัวเองเท่านั้น โดยยกเว้นผู้ดูแลระบบ
// Restrict media library
function restrict_media_library($wp_query_obj)
{
global $current_user, $pagenow;
if (!is_a($current_user, 'WP_User'))
return;
if ('admin-ajax.php' != $pagenow || $_REQUEST['action'] != 'query-attachments')
return;
if (!current_user_can('manage_options'))
$wp_query_obj->set('author', $current_user->ID);
return;
}
add_action('pre_get_posts', 'restrict_media_library');
กำหนดขนาดไฟล์สูงในการอัพโหลด ไม่เกิน 1MB
function custom_upload_size_limit($size)
{
// ตรวจสอบว่าเป็นแอดมินหรือไม่
if (!current_user_can('administrator')) {
// กำหนดขนาดไฟล์สูงสุดที่ต้องการในหน่วยไบต์ (เช่น 1MB)
$size = 1 * 1024 * 1024; // 1MB
}
return $size;
}
add_filter('upload_size_limit', 'custom_upload_size_limit');

แนะนำการใช้ Plugin Code Snippets
ในกรณีที่ไม่สะดวกแก้ไฟล์ functions.php สามารถใช้ปลั๊กอิน Code Snippets ที่ช่วยนำโค้ดเหล่านี้ไปแปะได้เช่นกัน โดยสามารถทำตามได้ขั้นตอนนี้
- Add New
- ตั้งชื่อ Snippet
- ใส่โค้ดที่ต้องการในช่อง Code
- เลือกตำแหน่งที่ต้องการให้โค้ดรัน
- คลิกปุ่ม Save และ Activate
แก้ไขโค้ด functions.php ในธีม
ในกรณีที่ไม่ได้เขียนธีมเองให้ระวังการแก้ไฟล์ functions.php เพราะถ้าธีมมีการอัพเดทจะทำให้โค้ดที่เราแก้นั้นถูกทับได้ เพราะฉะนั้นถ้าอยากจะเพิ่มโค้ดให้ไปแก้ที่ Child theme ครับ
โค้ดทั้งหมดที่รวบรวมมาให้เป็นเพียงการปรับหรือแก้ไขบางจุดใน WordPress แต่ถ้าอยากเรียนรู้ให้ลึกขึ้น สามารถอ่านบทความ “เส้นทางสู่การเป็น WordPress Theme Developer มืออาชีพ” ได้เพิ่มเติม หรืออยากหาคนที่เชี่ยวชาญด้าน WordPress สามารถติดต่อเราได้ ที่นี่ ถ้าหากชอบบทความนี้รบกวนช่วยกดไลก์กดแชร์ให้เพจ do action ให้ด้วยนะครับ

