zoukankan      html  css  js  c++  java
  • WordPress代码和分析从主题开始

    文件/wp-admin/theme-install.php

    1、wp_die(__())函数分析

    if ( ! current_user_can('install_themes') ) //判断是否有安装主题的权限
    	wp_die(__('You do not have sufficient permissions to install themes on this site.'));

    wp_die函数在“wp-includes/function.php”文件内,作用是 终止PHP代码的执行并显示HTML格式的消息提示。这个方法是用来代替PHP函数die,区别在于这个方法支持HTML代码。die在PHP中是退出当前程序并输出一段消息。

    “__(”是个什么函数呢?这个函数在“load-script.php”、“load-style.php”、”l10.php”等文件中出现定义了。在”load-script.php”、”load-style.php”中,function __() {}都是定义的空函数。在theme-install.php文件中是引用的“l10.php”文件的“__()”函数的。他们的文件包含关系如下:

    flow

    在l10.php中,“__()”函数是这样定义的:

    function __( $text, $domain = 'default' ) {
    	return translate( $text, $domain );
    }

    其中translate是一个应用在多语言环境下的翻译函数。(猜测的)

    WordePress对很多PHP系统自带的函数进行了包装,利用代理模式来解决PHP版本升级和PHP内置函数改变所带来的影响。

    2、wp_reset_vars( array('tab', 'paged') )分析

    wp_reset_vars是一个重新设置全局变量的函数,具体代码如下:

    //wp-admin/includes/misc.php

    function wp_reset_vars( $vars ) {
    	for ( $i=0; $i<count( $vars ); $i += 1 ) {
    		$var = $vars[$i];
    		global $$var;
    
    		if ( empty( $_POST[$var] ) ) {
    			if ( empty( $_GET[$var] ) )
    				$$var = '';
    			else
    				$$var = $_GET[$var];
    		} else {
    			$$var = $_POST[$var];
    		}
    	}
    }

    在theme-install.php中执行完wp_reset_vars( array('tab', 'paged') )后,如果$_POST[“tab”]或者$_GET[“tab”]有值得话,我们将会得到一个以$_POST[“tab”]或者$_GET[“tab”]值为变量的全局变量,如果没有值的话,将会清楚全局变量。

    在这个函数中,有一个global $$var这个定义比较费解。我写了个简单的测试代码搞明白了是什么意思:

    $var="abc";
    $$var="12";
    echo($$abc);
    这段代码输出的结果就是12。
    WordPress代码非常复杂,下次继续分析wp_enqueue_style和wp_enqueue_script的作用。
  • 相关阅读:
    简洁又漂亮的单网页404页源码(html格式404源码)
    运行bee run之后出现的错误以及解决方法
    window beego 安装出现的错误
    golang gin框架 使用swagger生成api文档
    go语言切片作为函数参数
    Go中函数接收器不能改变接收者的地址
    docker 删除none镜像
    redis下载安装
    git切换分支
    angular自定义验证器添加入模板驱动表单
  • 原文地址:https://www.cnblogs.com/TransTown/p/2020079.html
Copyright © 2011-2022 走看看