Bosszi

รับออกแบบวงจร รับทำวงจรสำหรับ ARDUINO ตามความต้องการ

Currently Viewing Posts in Wordpress

การเพิ่ม bootstrap ให้ plugin wordpress

การเพิ่ม bootstrap ให้ plugin wordpress

<?php
/** bootstrap */
function bootstrap_install_css() {
    wp_enqueue_style( 'bootstrap-css', 'https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/css/bootstrap.min.css' );
    
}add_action( 'admin_head', 'bootstrap_install_css' );

function bootstrap_install_js() {
    wp_enqueue_script( 'bootstrap-js', 'https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/js/bootstrap.bundle.min.js');
}
add_action('admin_footer', 'bootstrap_install_js');
?>

 

ถอนการติดตั้ง Plugin

ถอนการติดตั้ง Plugin บันทึกส่วนตัว

ในการถอนปลั๊กอินจะต้องลบออกให้หมดทุกอย่าง

  • ตารางดาต้าเบส ล้าง Cache Temp
  • Permalinks เป็นการจัดการและช่วยเรื่อง SEO

register_uninstall_hook(__FILE__, ‘pluginprefix_function_to_run’);

// if uninstall.php is not called by WordPress, die
if (!defined('WP_UNINSTALL_PLUGIN')) {
    die;
}
 
$option_name = 'wporg_option';
 
delete_option($option_name);
 
// for site options in Multisite
delete_site_option($option_name);
 
// drop a custom database table
global $wpdb;
$wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}mytable");

 

การเปิด และปิด Hook

การเปิด และปิด Hook บันทึกส่วนตัว


การเปิดใช้งาน

register_activation_hook( __FILE__, ‘pluginprefix_function_to_run’ );

ตัวอย่าง

/**
 * Register the "book" custom post type
 */
function pluginprefix_setup_post_type() {
    register_post_type( 'book', ['public' => true ] ); 
} 
add_action( 'init', 'pluginprefix_setup_post_type' );
 
 
/**
 * Activate the plugin.
 */
function pluginprefix_activate() { 
    // Trigger our function that registers the custom post type plugin.
    pluginprefix_setup_post_type(); 
    // Clear the permalinks after the post type has been registered.
    flush_rewrite_rules(); 
}
register_activation_hook( __FILE__, 'pluginprefix_activate' );

 


การปิดใช้งาน

register_deactivation_hook( __FILE__, ‘pluginprefix_function_to_run’ );


 

ส่วนหัวสำหรับ WordPress

ส่วนหัวสำหรับ WordPress  บันทึกส่วนตัว

/**
* Plugin Name: My Basics Plugin
* Plugin URI: https://example.com/plugins/the-basics/
* Description: Handle the basics with this plugin.
* Version: 1.10.3
* Requires at least: 5.2
* Requires PHP: 7.2
* Author: John Smith
* Author URI: https://author.example.com/
* License: GPL v2 or later
* License URI: https://www.gnu.org/licenses/gpl-2.0.html
* Text Domain: my-basics-plugin
* Domain Path: /languages
*/


 

การสร้างตารางด้วยปลั๊กอิน wordpress บันทึกส่วนตัว

การสร้างตารางด้วยปลั๊กอิน wordpress บันทึกส่วนตัว

  1. การสร้างตารางจากการติดตั้งปลั๊กอินครั้งแรก
  2. การเพิ่มข้อมูลเข้ามาในตารางระหว่างใช้งาน

ให้ wordpress ได้สร้างคลาสในการเชื่อมต่อ database ใว้ให้แล้ว https://developer.wordpress.org/reference/classes/wpdb/

ตัวแปรนี้จะประกาศใวใน wp-content/db.php

วิธีใช้งาน ต้องประกาศ global $wpdb; ก่อนใช้งานเสมอ

<?php
        // 1st Method - Declaring $wpdb as global and using it to execute an SQL query statement that returns a PHP object
     global $wpdb;
     $results = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}options WHERE option_id = 1", OBJECT );
?>

หรือแบบสั้น

<?php
          // 2nd Method - Utilizing the $GLOBALS superglobal. Does not require global keyword ( but may not be best practice )
     $results = $GLOBALS['wpdb']->get_results( "SELECT * FROM {$wpdb->prefix}options WHERE option_id = 1", OBJECT );
?>

การ insert()

 

worldpress plugin ที่ควรติดตั้ง

  • All-in-One WP Migration สำหรับ สำรองข้อมูลทั้งหมด
  • Yoast SEO สำหรับทำ SEO
  • AddToAny Share Buttons สำหรับแชร์
  • Enlighter – Customizable Syntax Highlighter สำหรับใส่โค๊ด
  • Loginizer การตั้งค่า เพอร์มิชชั้น
  • Really Simple SSL สำหรับใบรับรอง SSl

สิ่งที่ควรรู้ Yoast

Keyphrase density: ปัญหาความหนาแน่นของคีเวิด
Focus keyphrase: ใส่ ยี่ห้อ และโมเดล ของงาน ต้องเป็น ข้อความเดียวกับย่อหน้าแรก
Link keyphrase: ที่ Focus keyphrase ไม่ควรมีคำเดียว
Image alt attributes: ใส่ข้อมูลที่รูปภาพด้วย
Text length: คำในเนื้อเรื่อง อาจจะสั้นไป หรือยาวไป
Meta description length: อาจจะสั้นไป หรือยาวไป
Previously used keyphrase: คุณเคยใช้ keyphrase นี้อีกครั้งก่อน อย่าใช้ keyphrase คุณมากกว่าหนึ่งครั้ง

ความหมายของคำ ใน WordPress

ความหมายของคำ ใน WordPress  บันทึกส่วนตัว

  • slug คือส่วนที่ต่อจาก URL
  • Sidebar ส่วนที่เป็นกล่องยาวๆ จะอยู่ซ้ายบ้าง ขวาบ้างแล้วแต่การจัด วิเจ็ต
  • Dashboard หน้ารวมหลังบ้าน
  • Plugins โปรแกรมเสริมความสามารถ
  • วิเจ็ต ใช้ในการปรับแต่งการแสดงผลหน้าเว็บ เป็นหัวข้อย่อยของธีม
  • ธีม คือรูปร่างหน้าตา ของเว็บไซต์
  • Pages เพจเปรียบเสมือนหัวข้อใหญ่ หรือหน้าที่เราจะรวมเอาหน้าโพสมาเก็บใว้ในนี้หลายๆโพส
  • Posts โพสคือเนื้อหาที่เราจะเขียนในแต่ละหน้าเพื่อไปแสดงในเพจที่เป็นเหมือนหัวข้อใหญ่ หรือเป็นหน้ารวม
  • Media ที่เก็บ จัดการ ไฟล์ รูปภาพ วีดีโอ
  • Appearance จัดหน้าตาของเว็บ

Function WordPress all

Function WordPress all  บันทึกส่วนตัว

การนำไฟล์จากภายนอกเข้ามาประมวลผล

include(plugin_dir_path(__FILE__)."repair-menu.php");   //เรียกไฟล์หน้า php ที่อยู่ในพาทเดียวกัน
include(plugin_dir_path(__FILE__)."job/repair-menu.php");   //เรียกไฟล์หน้า php ที่อยู่ในโฟเดอร์ชื่อ job

สร้างการแจ้งเตือน

add_action( 'admin_notices', 'sample_admin_notice__success' );

wp_head ใช้กำหนดส่วน head tag  <head></head> ที่ไฟล์ header.php ของธีม

function hook_css() {
    ?>
        <style>
            .wp_head_example {
                background-color : #f1f1f1;
            }
        </style>
    <?php
}
add_action('wp_head', 'hook_css');

wp_footer ใช้กำหนดส่วน ท้ายก่อน </body>

<?php
function your_function() {
    echo '<p>This is inserted at the bottom</p>';
}
add_action( 'wp_footer', 'your_function' );
?>

add_option() ฟั่งชั่นที่จะเอาค่าออฟชั่นไปเก็บในตาราง wp_options

add_option( $option, $value = '', $deprecated = '', $autoload = 'yes' )

register_activation_hook( ) เมือเปิดการใช้งานปลั๊กอิน ให้ไปที่ฟังชั่นบางอย่างเช่น สร้างดาต้าเบส จะทำงานเมื่อ plugin activated ฟังก์ชันอัตโนมัติเมื่อ Activate plugin

function my_plugin_activate() 
{
    /* activation code here */
}
register_activation_hook( __FILE__, 'my_plugin_activate' );

register_deactivation_hook( ) เมือถูกกดปิดการใช้งานปลั๊กอินให้มาทำงานในนี้ จะถูกทำงานเมื่อ plugin deactivated ฟังก์ชันอัตโนมัติเมื่อ deactivated plugin

function register_deactivation_hook( $file, $function ) {
    $file = plugin_basename( $file );
    add_action( 'deactivate_' . $file, $function );
}

wp_nonce_field(  ) คือ field ใส่ไว้ที่ form สำหรับการป้องกันการ reqeust จาก site ของตัวเอง และไม่ให้ ภายนอก request เข้ามาแนะนำว่าให้ควรใส่ไว้ใน form

function wp_nonce_field( $action = -1, $name = '_wpnonce', $referer = true, $echo = true ) {
    $name        = esc_attr( $name );
    $nonce_field = '<input type="hidden" id="' . $name . '" name="' . $name . '" value="' . wp_create_nonce( $action ) . '" />'; 
    if ( $referer ) {
        $nonce_field .= wp_referer_field( false );
    } 
    if ( $echo ) {
        echo $nonce_field;
    } 
    return $nonce_field;
}

 

Classes

wpdb เชื่อมต่อกับฐานข้อมูล เป็นคลาส ต่อกับฐานขอมูลได้ มีฟังชั่นสำเร็จรูปให้ใช้งาน

// 1st Method - Declaring $wpdb as global and using it to execute an SQL query statement that returns a PHP object
global $wpdb;
$results = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}options WHERE option_id = 1", OBJECT );

 

Database Original WordPress

Database Original WordPress  บันทึกส่วนตัว

เมื่อติดตั้ง WordPress แล้วยังไม่ได้ลงอะไรเพิ่มมาดูข้อมูลตาราง Database ก่อนว่ามีอะไรบ้าง

  • wp_commentmeta ไม่มีข้อมูลไดๆในตาราง เก็บ comment ชื่อ อีเมล์ IP ของคนที่มา comment และข้อความ
    – meta_id
    – comment_id
    – meta_key
    – meta_value
  • wp_comments จะมีข้อมูลมาเลย 1 แถว เก็บความสัมพันของ comment
    – comment_ID
    – comment_post_ID
    – comment_author
    – comment_author_email
    – comment_author_url
    – comment_author_IP
    – comment_date
    – comment_date_gmt
    – comment_content
    – comment_karma
    – comment_approved
    – comment_agent
    – comment_type
    – comment_parent
    – user_id
  • wp_links ไม่มีข้อมูลไดๆในตาราง เก็บหัวข้อ Links
    – link_id
    – link_url
    – link_name
    – link_image
    – link_target
    – link_description
    – link_visible
    – link_owner
    – link_rating
    – link_updated
    – link_rel
    – link_notes
    – link_rss
  • wp_options จะมีข้อมูลมาเลย 25 แถว เก็บค่าเซตติ่งต่างๆ
    – option_id
    – option_name
    – option_value
    – autoload
  • wp_postmeta จะมีข้อมูลมาเลย 2 แถว เก็บขอมูลเพิ่มจาก Page และ Post
    – meta_id
    – post_id
    – meta_key
    – meta_value
  • wp_posts จะมีข้อมูลมาเลย 4 แถว เก็บ Page และ Post
    – ID
    – post_author
    – post_date
    – post_date_gmt
    – post_content
    – post_title
    – post_excerpt
    – post_status
    – comment_status
    – ping_status
    – post_password
    – post_name
    – to_ping
    – pinged
    – post_modified
    – post_modified_gmt
    – post_content_filtered
    – post_parent
    – guid
    – menu_order
    – post_type
    – post_mime_type
    – comment_count
  • wp_termmeta ไม่มีข้อมูลไดๆในตาราง
    – meta_id
    – term_id
    – meta_key
    – meta_value
  • wp_terms จะมีข้อมูลมาเลย 1 แถว เก็บหมวดหมู่ของ Page และ Post
    – term_id
    – name
    – slug
    – term_group
  • wp_term_relationships จะมีข้อมูลมาเลย 1 แถว เก็บความสัมพัน Post, Page, Categories ,Tags
    – object_id
    – term_taxonomy_id
    – term_order
  • wp_term_taxonomy  จะมีข้อมูลมาเลย 1 แถว เก็บรายละเอียด Post, Page, Categories ,Tags
    – term_taxonomy_id
    – term_id
    – taxonomy
    – description
    -parent
    -count
  • wp_usermeta จะมีข้อมูลมาเลย 20 แถว เก็บสิทการใช้งานของสมาชิก
    – umeta_id
    – user_id
    – meta_key
    – meta_value
  • wp_users จะมีข้อมูลมาเลย 1 แถว นั้นก็คือ Admin นั่นเอง
    – ID
    – user_login
    – user_pass
    – user_nicename
    – user_email
    – user_url
    – user_registered
    – user_activation_key
    – user_status
    – display_name

สร้างเมนูหลังบ้าน add_menu_page

สร้างเมนูหลังบ้าน add_menu_page  บันทึกส่วนตัว

<?php
/**
 * Plugin Name: AAA
 * Description: BMI Calculator To Content
 * Plugin URI: https://www.bosszi.com/%e0%b8%95%e0%b8%b4%e0%b8%94%e0%b8%95%e0%b9%88%e0%b8%ad%e0%b9%80%e0%b8%a3%e0%b8%b2/
 * Author: Supoth Nakudom
 * Author URI: https://www.bosszi.com
 * Version: 1.0
 */
 
function add_menu() {	//ชื่อฟังชันที่เราจะเขียน
    add_menu_page(		// สร้าเมนูหัวข้อใหญ่
    'บัญชี bosszi', 				// Page Title ชื่อของไตเติ้ลเพจ 
    'ระบบบัญชี', 				 // Menu Title ชื่อที่จะให้แสดงในเมนู 
    'manage_options',		 // ตั้งค่าว่าสมาชิกกลุ่นไหนที่จะเห็นเมนูนี้ได้ Capabiliy ดูที่หนัวข้อ Roles and Capabilities
    'maim_menu01', 		// Menu_slug
    'maim_menu1', 		// function ที่เราจะใช้เงาน
    'dashicons-calculator', // ไอคอนด้านหน้าเมนู icon_url ถ้าไม่ใส่มันจะเอาเฟืองให้ https://iconify.design/icon-sets/dashicons/
    '1'   			// position ตำแหน่ง ลำดับของเมนู ให้ดูที่ตาราง https://developer.wordpress.org/reference/functions/add_menu_page/
                    // ถ้าไม่ใส่ระบบจะเลือกให้อัตโนมัติ
    );	
    add_submenu_page(			// สร้าเมนูหัวข้อย่อย
        "maim_menu01",  		//parent_slug ใส่เมนูหลัก https://developer.wordpress.org/reference/functions/add_submenu_page/
        "ทดสอบ sub menu", 		//page_title
        "ทดสอบ sub menu",		//menu_title
        "manage_options", 			//capability
        "sub-menu", 				//menu_slug
        "func_submenu" ,		//function
        ""								//position
    ); 
}
add_action("admin_menu", "add_menu"); //add_action("เมื่อมีสิ่งนี้เกิดขึ้นในระบบ", "ให้ไปเรียกชื่อฟังชันที่เราจะเขียน");
 
function maim_menu1(){
    echo 'This is a maim_menu1';
}

function func_submenu(){
    echo 'This is a submenu_menu1';
}

?>

 

add_action()

add_action()    บันทึกส่วนตัว

add_action( string $tag, callable $function_to_add, int $priority = 10, int $accepted_args = 1 )

  • string $tag                                ชื่อ Hook ที่จะเรียกใช้  Plugin API ของ WP
  • callable $function_to_add        ชื่อฟังชันที่เราเขียนขึ้นเพื่อเพิ่ม code เข้าไปใน hook ที่เราเรียก
  • int $priority = 10                      คือการจัดลำดับ ค่าเริ่มต้นคือ 10 ลำดับความสำคัญในการทำ Function นี้
  • int $accepted_args = 1             กำหนดจำนวนพารามิเตอร์ของฟังก์ชัน ค่าเริ่มต้นคือ 1
add_action("admin_menu", "bosszi_add_menu");
//add_action("API ของ WP", "ชื่อฟังชันที่เราจะเขียน");

 

Header Fields

Header Fields  บันทึกส่วนตัว

<?php
/**
 * Plugin Name: AAA
 * Description: BMI Calculator To Content
 * Plugin URI: https://www.bosszi.com/%e0%b8%95%e0%b8%b4%e0%b8%94%e0%b8%95%e0%b9%88%e0%b8%ad%e0%b9%80%e0%b8%a3%e0%b8%b2/
 * Author: Supoth Nakudom
 * Author URI: https://www.bosszi.com
 * Version: 1.0
 */
 

?>