ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์CMS & Free Scriptปลั๊กอิน WordPress เพื่อแกะรอย hooks สำหรับคนทำเว็บ
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: ปลั๊กอิน WordPress เพื่อแกะรอย hooks สำหรับคนทำเว็บ  (อ่าน 799 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
vii
Verified Seller
สมุนแก๊งเสียว
*

พลังน้ำใจ: 132
ออฟไลน์ ออฟไลน์

กระทู้: 950



ดูรายละเอียด เว็บไซต์
« เมื่อ: 24 ธันวาคม 2023, 17:51:37 »

plugin นี้ทำไว้เพื่อแกะรอย actions, filters ต่างๆของ WordPress.
ข้อแตกต่างจากปลั๊กอินอื่นๆคือ

* ปลั๊กอินอื่นๆจะทำงานเฉพาะเมื่อโหลดหน้านั้น. ดังนั้นถ้ามันมีการ redirect ก็ไม่รู้เรื่องกัน.
* ปลั๊กอินอื่นจะทำงานและแสดงผลเฉพาะต่อ admin แม้จะมีบางตัวสามารถกำหนด cookie ได้ให้แสดงในฐานะผู้ดูธรรมดา แต่ก็จะติดข้อข้างบน. ดังนั้นถ้าใช้ปลั๊กอินทั่วไปที่แกะรอย hooks แล้วจะต้องดูในฐานะผู้ใช้ไม่ใช่สมาชิก ก็จะไม่รู้เรื่องกันอีกเหมือนกัน.

ข้อดีของปลั๊กอินตัวนี้ที่ทำออกมาคือ เพื่อกำหนด option ให้แกะรอยแล้วบันทึกลงไฟล์ แล้วสั่งให้หยุดแกะรอยได้. คำสั่งบันทึกต่างๆจะตั้งค่าลงใน transient โดยมีอายุ 2 วันหากลืมกดปิด ดังนั้นมันจะไม่เหลือขยะใน DB เวลาคุณลืมปิดแล้วลบปลั๊กอินทิ้งไป.

วิธีใช้

1. เซฟไฟล์ลงในโฟลเดอร์ wp-content/plugins/wp-hooks-trace/
2. activate plugin
3. กด Enable trace จากในหน้ารายการปลั๊กอินนั้นเลย
4. เริ่มทำงานเพื่อดูว่า Wordpress มันเรียก hooks อะไรบ้าง
5. กด Disable trace
6. เปิดโฟลเดอร์ที่ติดตั้งปลั๊กอินนี้ แล้วเปิดไฟล์ .txt มาอ่านเพื่อดูว่ามีอะไรถูกเรียกใช้บ้าง.

Download: https://gist.github.com/ve3/96c50c671e06dde475f6e3c80492f7e5

Plugin ทางเลือกอื่นๆ
https://wordpress.org/plugins/wp-hooks-finder/
https://wordpress.org/plugins/query-monitor/
https://wordpress.org/plugins/...bar-actions-and-filters-addon/
บันทึกการเข้า

vii
Verified Seller
สมุนแก๊งเสียว
*

พลังน้ำใจ: 132
ออฟไลน์ ออฟไลน์

กระทู้: 950



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 24 ธันวาคม 2023, 20:24:46 »

ตัวอย่างผลลัพธ์ WP Hooks Trace เมื่อทำงานกับหน้า /wp-login.php ตอนส่งข้อมูลเข้าฟอร์ม login แล้วกด submit

อ้างถึง
page: /wp-login.php method: POST
#ACTIONS (hits) =============================
muplugins_loaded (1)
registered_taxonomy (16)
registered_taxonomy_category (2)
registered_taxonomy_post_tag (2)
registered_taxonomy_nav_menu (2)
registered_taxonomy_link_category (2)
registered_taxonomy_post_format (2)
registered_taxonomy_wp_theme (2)
registered_taxonomy_wp_template_part_area (2)
registered_taxonomy_wp_pattern_category (2)
registered_post_type (28)
registered_post_type_post (2)
registered_post_type_page (2)
registered_post_type_attachment (2)
registered_post_type_revision (2)
registered_post_type_nav_menu_item (2)
registered_post_type_custom_css (2)
registered_post_type_customize_changeset (2)
registered_post_type_oembed_cache (2)
registered_post_type_user_request (2)
registered_post_type_wp_block (2)
registered_post_type_wp_template (2)
registered_post_type_wp_template_part (2)
registered_post_type_wp_global_styles (2)
registered_post_type_wp_navigation (2)
plugin_loaded (5)
plugins_loaded (1)
auth_cookie_malformed (1)
set_current_user (1)
sanitize_comment_cookies (1)
wp_roles_init (1)
setup_theme (1)
unload_textdomain (1)
load_textdomain (7)
after_setup_theme (1)
init (1)
widgets_init (1)
register_sidebar (1)
wp_register_sidebar_widget (21)
wp_sitemaps_init (1)
wp_default_styles (1)
wp_default_scripts (1)
qm/cease (4)
wp_loaded (1)
login_init (1)
login_form_login (1)
wp_authenticate (1)
add_user_meta (1)
added_user_meta (1)
wp_cache_set_last_changed (1)
set_auth_cookie (1)
set_logged_in_cookie (1)
wp_login (1)
shutdown (1)
End actions. ================================

#FILTERS ====================================
wp_fatal_error_handler_enabled
enable_wp_debug_mode_checks
wp_doing_ajax
incompatible_sql_modes
enable_loading_object_cache_dropin
pre_wp_load_alloptions
query
log_query_custom_data
pre_cache_alloptions
alloptions
pre_option_siteurl
pre_option
option_siteurl
pre_site_option_siteurl
default_site_option_siteurl
site_option_siteurl
pre_option_home
option_home
register_taxonomy_args
register_category_taxonomy_args
gettext
gettext_default
gettext_with_context
gettext_with_context_default
taxonomy_labels_category
register_post_tag_taxonomy_args
taxonomy_labels_post_tag
register_nav_menu_taxonomy_args
taxonomy_labels_nav_menu
register_link_category_taxonomy_args
taxonomy_labels_link_category
register_post_format_taxonomy_args
taxonomy_labels_post_format
register_wp_theme_taxonomy_args
taxonomy_labels_wp_theme
register_wp_template_part_area_taxonomy_args
taxonomy_labels_wp_template_part_area
register_wp_pattern_category_taxonomy_args
taxonomy_labels_wp_pattern_category
sanitize_key
register_post_type_args
register_post_post_type_args
post_type_labels_post
register_page_post_type_args
post_type_labels_page
pre_option_wp_attachment_pages_enabled
option_wp_attachment_pages_enabled
register_attachment_post_type_args
post_type_labels_attachment
register_revision_post_type_args
post_type_labels_revision
register_nav_menu_item_post_type_args
post_type_labels_nav_menu_item
register_custom_css_post_type_args
post_type_labels_custom_css
register_customize_changeset_post_type_args
post_type_labels_customize_changeset
register_oembed_cache_post_type_args
post_type_labels_oembed_cache
register_user_request_post_type_args
post_type_labels_user_request
register_wp_block_post_type_args
post_type_labels_wp_block
register_wp_template_post_type_args
post_type_labels_wp_template
register_wp_template_part_post_type_args
post_type_labels_wp_template_part
register_wp_global_styles_post_type_args
post_type_labels_wp_global_styles
register_wp_navigation_post_type_args
post_type_labels_wp_navigation
theme_root
pre_option_active_plugins
option_active_plugins
pre_option_hack_file
option_hack_file
qm/built-in-collectors
pre_determine_locale
pre_option_WPLANG
option_WPLANG
locale
determine_locale
gettext_debug-bar
pre_option_blog_charset
option_blog_charset
load_default_widgets
load_default_embeds
wp_audio_extensions
wp_audio_embed_handler
wp_video_extensions
wp_video_embed_handler
qm/collectors
qm/dispatchers
pre_site_option_wp_beta_tester
default_site_option_wp_beta_tester
pre_option_wp_beta_tester
option_wp_beta_tester
site_option_wp_beta_tester
wpbt_hide_report_a_bug
set_url_scheme
plugins_url
gettext_wordpress-beta-tester
determine_current_user
wp_is_application_passwords_available
map_meta_cap
user_has_cap
pre_option_permalink_structure
option_permalink_structure
pre_option_wp_user_roles
option_wp_user_roles
pre_option_stylesheet
option_stylesheet
pre_option_template
option_template
template
template_directory
stylesheet
stylesheet_directory
override_unload_textdomain
pre_load_textdomain
override_load_textdomain
load_textdomain_mofile
qm/trace/ignore_class
qm/trace/ignore_method
qm/trace/ignore_func
qm/trace/ignore_hook
qm/trace/show_args
get_available_languages
wp_cache_themes_persistently
extra_theme_headers
theme_file_path
theme_locale
pre_get_scheduled_event
pre_option_cron
option_cron
is_post_type_viewable
post_format_rewrite_base
pre_option_category_base
option_category_base
pre_option_tag_base
option_tag_base
pre_option_link_manager_enabled
option_link_manager_enabled
site_url
admin_url
kses_allowed_protocols
clean_url
pre_option_sidebars_widgets
option_sidebars_widgets
sidebars_widgets
gettext_skinny
register_sidebar_defaults
pre_option_widget_pages
option_widget_pages
pre_option_widget_calendar
option_widget_calendar
pre_option_widget_archives
option_widget_archives
pre_option_widget_media_audio
option_widget_media_audio
pre_option_widget_media_image
option_widget_media_image
pre_option_widget_media_gallery
option_widget_media_gallery
pre_option_widget_media_video
option_widget_media_video
pre_option_widget_meta
option_widget_meta
pre_option_widget_search
option_widget_search
pre_option_widget_text
option_widget_text
pre_option_widget_categories
option_widget_categories
pre_option_widget_recent-posts
option_widget_recent-posts
pre_option_widget_recent-comments
option_widget_recent-comments
pre_option_widget_rss
option_widget_rss
pre_option_widget_tag_cloud
option_widget_tag_cloud
pre_option_widget_nav_menu
option_widget_nav_menu
pre_option_widget_custom_html
option_widget_custom_html
pre_option_widget_block
option_widget_block
pre_option_use_smilies
option_use_smilies
smilies
wp_spaces_regexp
should_load_separate_core_block_assets
rest_url_prefix
home_url
wp_sitemaps_stylesheet_url
wp_sitemaps_stylesheet_index_url
pre_option_blog_public
option_blog_public
wp_sitemaps_enabled
register_meta_args
is_protected_meta
block_type_metadata
block_type_metadata_settings
register_block_type_args
includes_url
rest_url
nonce_user_logged_out
nonce_life
salt
heartbeat_settings
wp_audio_shortcode_library
wp_video_shortcode_library
mejs_settings
ngettext
ngettext_default
pre_option_start_of_week
option_start_of_week
pre_option_time_format
option_time_format
pre_option_date_format
option_date_format
pre_site_option_can_compress_scripts
default_site_option_can_compress_scripts
pre_option_can_compress_scripts
option_can_compress_scripts
site_option_can_compress_scripts
pre_option_timezone_string
option_timezone_string
pre_option_gmt_offset
default_wp_template_part_areas
plugin_locale
pre_option_theme_switched
option_theme_switched
nocache_headers
pre_option_html_type
option_html_type
login_url
login_link_separator
secure_signon_cookie
sanitize_user
authenticate
get_user_metadata
update_user_metadata_cache
wp_authenticate_user
check_password
auth_cookie_expiration
secure_auth_cookie
secure_logged_in_cookie
session_token_manager
attach_session_information
random_password
default_user_metadata
get_object_subtype_user
sanitize_user_meta_session_tokens
update_user_metadata
add_user_metadata
pre_get_col_charset
pre_get_table_charset
auth_cookie
send_auth_cookies
login_redirect
wp_safe_redirect_fallback
allowed_redirect_hosts
wp_redirect
qm/dispatch/redirect
wp_redirect_status
x_redirect_by
qm/dispatch/ajax
qm/dispatch/wp_die
qm/dispatch/html
pre_transient_rdht_tracehooks
pre_option__transient_timeout_rdht_tracehooks
option__transient_timeout_rdht_tracehooks
pre_option__transient_rdht_tracehooks
option__transient_rdht_tracehooks
transient_rdht_tracehooks
pre_transient_rdht_tracehooks_started
pre_option__transient_timeout_rdht_tracehooks_started
option__transient_timeout_rdht_tracehooks_started
pre_option__transient_rdht_tracehooks_started
option__transient_rdht_tracehooks_started
transient_rdht_tracehooks_started
End filters. ================================

ในส่วนของ actions ก็จะไม่ค่อยมีอะไรที่เกี่ยวกับกระบวนการ login จริงๆมากเท่าไหร่ ยกเว้นตั้งแต่ wp_authenticate ลงมา

ในส่วนของ filters นั้นก็จะมีเยอะมากทีเดียว.
ที่เข้าใจว่าเกี่ยวข้องและถูกเรียกใช้งานคือ authenticate, auth_cookie_ ทั้งหลาย.


« แก้ไขครั้งสุดท้าย: 24 ธันวาคม 2023, 20:36:13 โดย vii » บันทึกการเข้า

หน้า: [1]   ขึ้นบน
พิมพ์