โครงสร้าง โฟลเดอร์ Plugin WordPress
/ plugin-name plugin-name.php uninstall.php / languages / includes / admin / js / css / images / public / js / css / images
/ plugin-name plugin-name.php uninstall.php / languages / includes / admin / js / css / images / public / js / css / images
ในการถอนปลั๊กอินจะต้องลบออกให้หมดทุกอย่าง
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");
การเปิดใช้งาน
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’ );
/**
* 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 ได้สร้างคลาสในการเชื่อมต่อ 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 ); ?>
สิ่งที่ควรรู้ Yoast
Keyphrase density: ปัญหาความหนาแน่นของคีเวิด
Focus keyphrase: ใส่ ยี่ห้อ และโมเดล ของงาน ต้องเป็น ข้อความเดียวกับย่อหน้าแรก
Link keyphrase: ที่ Focus keyphrase ไม่ควรมีคำเดียว
Image alt attributes: ใส่ข้อมูลที่รูปภาพด้วย
Text length: คำในเนื้อเรื่อง อาจจะสั้นไป หรือยาวไป
Meta description length: อาจจะสั้นไป หรือยาวไป
Previously used keyphrase: คุณเคยใช้ keyphrase นี้อีกครั้งก่อน อย่าใช้ keyphrase คุณมากกว่าหนึ่งครั้ง
การนำไฟล์จากภายนอกเข้ามาประมวลผล
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 );
เมื่อติดตั้ง WordPress แล้วยังไม่ได้ลงอะไรเพิ่มมาดูข้อมูลตาราง Database ก่อนว่ามีอะไรบ้าง
<?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( string $tag, callable $function_to_add, int $priority = 10, int $accepted_args = 1 )
add_action("admin_menu", "bosszi_add_menu"); //add_action("API ของ WP", "ชื่อฟังชันที่เราจะเขียน");
<?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 */ ?>