亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

淺析Wordpress的插件執行流程

2019-11-17 04:26:46
字體:
來源:轉載
供稿:網友

1、首先,我現在pugins文件夾下寫一個自己的插件
復制php內容到剪貼板
PHP代碼:

<?php 
/*
Plugin Name: test
Plugin URI: [url=http://WordPRess.org/]http://wordpress.org/[/url]#
Description: 我測試用的
Author: lw(fantasy)
Version: 0.1
Author URI: [url=http://www.xxx.com/]http://www.xxx.com/[/url] 
*/ 
 
$test = "<div id='my_test'>這是我的第一個插件!</div>";

function output(){ 
    global $test;
    echo $test;
}

add_action('wp_footer','output');
?>


然后在后臺啟用。。

2、WP執行是加載在”wp-settings.php”,而在此文件中,可以找到以下與插件相關的代碼片斷:
復制PHP內容到剪貼板
PHP代碼:
if ( get_option('active_plugins') ) {
$current_plugins = get_option('active_plugins');
dump($current_plugins);
if ( is_array($current_plugins) ) {
  foreach ($current_plugins as $plugin) {
   if ( '' != $plugin && 0 == validate_file($plugin) && file_exists(WP_PLUGIN_DIR . '/' . $plugin) )
    include_once(WP_PLUGIN_DIR . '/' . $plugin);
  }
}
}


我dump了一下$current_plugins,得到

Array
(
    [0] => Fanfou-Daily/Fanfou-Daily.php
    [1] => mulberrykit.php
    [2] => test.php
)

可以看到我寫的test.php插件已經被include進去了。。

3、在主題模板里的footer.php里面會執行一個函數
<?php wp_footer(); ?>

而這個wp_footer里面又執行

do_action('wp_footer');

而這個do_action就是執行前面我們已經注冊了的【add_action('wp_footer','output'); 】output()函數。。。

這樣就輸出了"<div id='my_test'>這是我的第一個插件!</div>"了

最后貼一下do_action的源碼,大家體會一下吧
復制PHP內容到剪貼板
PHP代碼:
/**
* do_action() - Execute functions hooked on a specific action hook.
*
* This function invokes all functions attached to action hook <tt>$tag</tt>.
* It is possible to create new action hooks by simply calling this function,
* specifying the name of the new hook using the <tt>$tag</tt> parameter.
*
* You can pass extra arguments to the hooks, much like you can with apply_filters().
*
* @see apply_filters() This function works similar with the exception that nothing is
* returned and only the functions or methods are called.
*
* @package WordPress
* @subpackage Plugin
* @since 1.2
* @global array $wp_filter Stores all of the filters
* @global array $wp_actions Increments the amount of times action was triggered.
*
* @param string $tag The name of the action to be executed.
* @param mixed $arg,... Optional additional arguments which are passed on to the functions hooked to the action.
* @return null Will return null if $tag does not exist in $wp_filter array
*/
function do_action($tag, $arg = '') {
global $wp_filter, $wp_actions, $merged_filters, $wp_current_filter;
if ( is_array($wp_actions) )
  $wp_actions[] = $tag;
else
  $wp_actions = array($tag);
$wp_current_filter[] = $tag;
// Do 'all' actions first
if ( isset($wp_filter['all']) ) {
  $all_args = func_get_args();
  _wp_call_all_hook($all_args);
}
if ( !isset($wp_filter[$tag]) ) {
  array_pop($wp_current_filter);
  return;
}
$args = array();
if ( is_array($arg) && 1 == count($arg) && is_object($arg[0]) ) // array(&$this)
  $args[] =& $arg[0];
else
  $args[] = $arg;
for ( $a = 2; $a < func_num_args(); $a++ )
  $args[] = func_get_arg($a);
// Sort
if ( !isset( $merged_filters[ $tag ] ) ) {
  ksort($wp_filter[$tag]);
  $merged_filters[ $tag ] = true;
}
reset( $wp_filter[ $tag ] );
do {
  foreach ( (array) current($wp_filter[$tag]) as $the_ )
   if ( !is_null($the_['function']) )
    call_user_func_array($the_['function'], array_slice($args, 0, (int) $the_['accepted_args']));
} while ( next($wp_filter[$tag]) !== false );
array_pop($wp_current_filter);
}


其中比較關鍵的就是call_user_func_array($the_['function'], array_slice($args, 0, (int) $the_['accepted_args']));這句了


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
最新的欧美黄色| 精品福利视频导航| 欧洲永久精品大片ww免费漫画| 国产精品久久久久久亚洲调教| 欧美亚洲免费电影| 国产综合视频在线观看| 日韩电影中文字幕| 在线成人激情黄色| 欧美情侣性视频| 国产精品扒开腿做爽爽爽的视频| 日本三级韩国三级久久| 亚洲伊人第一页| 欧美一级电影久久| 国产精品中文在线| 欧美精品午夜视频| 国内外成人免费激情在线视频| 91极品女神在线| 日本精品免费观看| 国产精品aaa| 欧美区在线播放| 精品久久久久久久久中文字幕| 91精品国产综合久久香蕉最新版| 大荫蒂欧美视频另类xxxx| 国产精品678| 欧美日本高清一区| 另类视频在线观看| 欧美日韩免费在线| 亚洲成人免费在线视频| 日韩av免费网站| 国产精品日日摸夜夜添夜夜av| 国内成人精品一区| 亚洲精品黄网在线观看| 中文字幕一精品亚洲无线一区| 亚洲图片欧美午夜| 欧美激情久久久久| 97超视频免费观看| 日本欧美在线视频| 久久99精品视频一区97| 国产精品一区久久久| 中文字幕综合在线| 国产成人精品国内自产拍免费看| 日韩欧美一区视频| 国产亚洲精品久久久久动| 日韩av在线资源| 亚洲欧美精品一区二区| 在线免费看av不卡| 日韩欧美a级成人黄色| 欧美日韩免费观看中文| 亚洲伊人成综合成人网| 九九热最新视频//这里只有精品| 亚洲视频免费一区| 国产z一区二区三区| 国产成人精品在线播放| 国产精品福利在线| 久久青草精品视频免费观看| 最近2019中文字幕大全第二页| 亚洲福利视频久久| 韩国日本不卡在线| 国产精品一久久香蕉国产线看观看| 在线观看日韩www视频免费| 5566成人精品视频免费| 欧美亚洲国产精品| 日韩av综合网| 欧美国产视频一区二区| yellow中文字幕久久| 亚洲一区中文字幕在线观看| 欧美重口另类videos人妖| 日本不卡免费高清视频| 日韩av中文字幕在线免费观看| 激情亚洲一区二区三区四区| 国产精品无码专区在线观看| 亚洲黄色www| 最近中文字幕mv在线一区二区三区四区| 91精品国产综合久久香蕉| 国产精品久久久久久久久久久久久| 欧美老女人在线视频| 亚洲国产日韩欧美在线99| 欧美极品少妇xxxxⅹ裸体艺术| 色樱桃影院亚洲精品影院| 久久精品国产亚洲精品2020| 欧美在线亚洲在线| 久久伊人精品一区二区三区| 欧美激情在线观看视频| 一区二区三区国产视频| 久久夜色精品国产欧美乱| 欧美交受高潮1| 亚洲性av网站| 国产精品视频男人的天堂| 亚洲美女av在线播放| 亚洲成人国产精品| 18性欧美xxxⅹ性满足| 九九精品在线播放| 国产精品美女久久久久久免费| 91夜夜未满十八勿入爽爽影院| 国产一区二区三区三区在线观看| 最新69国产成人精品视频免费| 一区二区三区四区视频| 俺去了亚洲欧美日韩| 精品欧美aⅴ在线网站| 久久久精品欧美| 久久久欧美精品| 欧美精品日韩三级| 日韩免费av一区二区| www.亚洲天堂| 97av在线视频| 色综合久久悠悠| 综合网日日天干夜夜久久| 亚洲欧美在线磁力| 国产成人精品999| 成人精品久久一区二区三区| 亚洲性无码av在线| 精品久久久久久久久久久久久久| 国产精品视频专区| 国产精品白丝jk喷水视频一区| 欧美在线视频免费| 日韩极品精品视频免费观看| 国产三级精品网站| 九九热精品视频在线播放| 亚洲人成电影网站色…| 在线播放国产一区中文字幕剧情欧美| 亚洲精品中文字幕女同| 91在线色戒在线| 亚洲精品一区二区久| 国产成人鲁鲁免费视频a| 国产精品视频导航| 欧洲精品久久久| 国产成人欧美在线观看| 国产日韩欧美在线视频观看| 久久精品国产久精国产思思| 动漫精品一区二区| 青草青草久热精品视频在线观看| 亚洲黄一区二区| 911国产网站尤物在线观看| 欧美激情视频免费观看| 欧美另类99xxxxx| 日韩成人免费视频| 欧美xxxx18国产| 成人写真福利网| 国产精品夜间视频香蕉| 97激碰免费视频| 伊人青青综合网站| 91国自产精品中文字幕亚洲| 久久久久免费精品国产| 亚洲精品免费一区二区三区| 色综合老司机第九色激情| 日韩的一区二区| 欧美黄网免费在线观看| 亚洲一区国产精品| 欧美成人黄色小视频| 国产精品福利在线观看网址| xxx成人少妇69| 欧美黄色三级网站| 国产精品精品一区二区三区午夜版| 欧美成人在线网站| 久久99久久99精品免观看粉嫩| 久久成人人人人精品欧| 一区二区三区日韩在线| 国产精品中文字幕在线观看| 尤物九九久久国产精品的分类| 97久久久免费福利网址| 亚洲999一在线观看www| 国产精品a久久久久久| 亚洲色图第一页| 亚洲精品一区二三区不卡|