รวมโค้ด WordPress สำเร็จรูป: แก้ปัญหายอดฮิตได้ทันที

|
13 นาที ในการอ่าน

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

สารบัญ

ซ่อน Admin Bar

ซ่อน 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

เปลี่ยนโลโก้ที่หน้า 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: 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 ( ใช้เพื่อเป็นเมนูลัด )

เพิ่มลิงก์ในแถบ 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');
code snippet

แนะนำการใช้ 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 ให้ด้วยนะครับ

แชร์:
line

author - aum watcharapon
อั้ม วัชรพล
👨🏻‍💻 ผู้เชี่ยวชาญทางด้าน WordPress

Subscribe to newsletter

doaction จะส่งเพื่อแจ้งเตือนเมื่อมีบทความใหม่ๆ ในเว็บไซต์และสามารถกดยกเลิกได้ตลอดเวลา

บทความอื่นๆ

เส้นทางสู่การเป็น WordPress Theme Developer มืออาชีพ

บทความนี้จะมาแนะนำวิธีการเริ่มต้นเป็นนักพัฒนา WordPress Theme สำหรับผู้ที่สนใจสร้างธีมของตนเอง เชื่อว่าหลายคนที่ยังใช้ Elementor, Visual Composer, Beaver Builder, Oxygen Builder อาจมีคำถามว่า ถ้าอยากเริ่มเขียนธีมของตัวเองจะต้องทำอย่างไร บทความนี้จะแนะแนวทางในการเป็น Theme Developer ของ WordPress พร้อมกับสิ่งที่ควรเรียนรู้เพื่อเริ่มต้นได้อย่างไรกันครับ

อ่านต่อ

แนวทางการใช้ WordPress: สิ่งที่ควรทำและไม่ควรทำ

การพัฒนาและดูแลเว็บไซต์ WordPress มีหลายปัจจัยที่ต้องพิจารณาเพื่อให้เว็บไซต์มีประสิทธิภาพสูงสุดและปลอดภัย การเลือกใช้ธีมและปลั๊กอินที่เหมาะสม รวมถึงการอัพเดท WordPress Core และปลั๊กอินอย่างสม่ำเสมอเป็นสิ่งสำคัญที่ไม่ควรมองข้าม นอกจากนี้ การ Backup ข้อมูลเป็นประจำและการเลือกโฮสติ้งที่มีคุณภาพจะช่วยให้เว็บไซต์ทำงานได้อย่างราบรื่น การเรียนรู้พื้นฐานการเขียนโค้ดและการย่อขนาดรูปภาพก่อนอัพโหลดจะช่วยเพิ่มประสิทธิภาพของเว็บไซต์ การใช้ระบบ Cache และการปรับแต่ง wp-login.php เป็นอีกวิธีหนึ่งที่จะช่วยเพิ่มความเร็วและความปลอดภัยของเว็บไซต์ และอย่าลืมปฏิบัติตามกฎหมาย PDPA เพื่อคุ้มครองข้อมูลส่วนบุคคลของผู้ใช้งาน ในทางตรงกันข้าม การกระทำบางอย่างที่ไม่ควรทำเช่น การแก้ไขไฟล์ธีมโดยตรง การใช้ธีมหรือปลั๊กอินเถื่อน และการใช้รูปภาพที่มีลิขสิทธิ์โดยไม่ได้รับอนุญาตเป็นสิ่งที่ควรหลีกเลี่ยง นอกจากนี้ การย่อและรวมไฟล์ JavaScript จากการใช้ปลั๊กอินแคชอาจก่อให้เกิดปัญหาในบางครั้ง การพึ่งพาปลั๊กอินมากเกินไปก็ไม่ใช่วิธีที่ดีที่สุด และควรหลีกเลี่ยงการให้เซิร์ฟเวอร์จัดการย่อขนาดรูปภาพ อีกทั้งอย่าลืมลบปลั๊กอินหรือธีมที่ไม่ได้ใช้งานเพื่อลดภาระของระบบและเพิ่มความปลอดภัย บทความนี้จะช่วยให้คุณรู้จักกับวิธีการที่ถูกต้องในการปรับแต่งและดูแลเว็บไซต์ WordPress ของคุณ เพื่อให้เว็บไซต์ทำงานได้อย่างมีประสิทธิภาพ ปลอดภัย และมีคุณภาพในระยะยาว สิ่งที่ควรทำ (Do's) หัวข้อทั้งหมดนี้รวบรวมจากประสบการณ์ของผมเองในการทำ WordPress เพื่อไม่เพียงแต่ทำให้เว็บปลอดภัย แต่ยังช่วยให้เว็บลีน เล็ก โหลดเร็ว และเข้าใจว่าวิธีการที่ถูกต้องในการปรับแต่ง WordPress ของคุณเอง การเลือกใช้ธีม การเลือกธีมสำหรับ WordPress มีหลายสิ่งที่ควรคิดถึง อย่างแรกคือควรเลือกธีมที่ได้รับการอัพเดทอย่างสม่ำเสมอ […]

อ่านต่อ

หากมีคำถาม หรือต้องการคำปรึกษาเกี่ยวกับ WordPress

สำนักงาน

  • บริษัท ดู แอคชั่น จำกัด
    66 ซอยเพชรเกษม 98/1, ถนนเพชรเกษม,
    แขวงบางแคเหนือ, เขตบางแค
    กรุงเทพมหานคร
    10160

เราใช้คุกกี้เพื่อสร้างประสบการณ์ที่ดี มีประสิทธิภาพยิ่งขึ้น

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • เปิดใช้งานตลอด

บันทึกการตั้งค่า