飞龙博客

深入经藏 智慧如海

wordpress主题如何自定义公用全局函数变量入门

feilong.org 修订于2011-06-04 09:03:49 1,751

定制wordpress主题的时候,飞龙需要重复用到一些函数值,比如category.php的当前页分类id,single.php的日志分类ids。还有如果你不想用 custom post type,势必要用到categories的顶级分类id和slug,用来判断和分别日志的各种“类型”。为避免重复定义这些基本的值,这里飞龙想采用全局或公用函数变量。wordpress 主题如何自定义公用全局函数变量?飞龙把测试成果写在这里:http://feilong.org/wordpress-define-global-var 飞龙第4次修订于20101102 ,希望对您有用!

一、飞龙测试的变量基础知识:

(一)&的作用

<?php
$a = '5';
$b = &$a; //表示 $b 和 $a 引用了同一个变量
$a = '8'; //这里重置了 $a
echo $b; //将输出8
unset($a); //清除变量 $a,于是引用关联失效
echo $b; //这里仍输出 8
$a = '9';
echo $b; //因为引用关联失效,这里仍输出8
?>

(二)变量赋值

<?php
$name = 'feilong.org'; //传值赋值,字符串
$my = $name; //传值赋值,变量
$addr = &$name; //通过 & 传地址方式赋值
$name = 'feilong'; //重设 $name 值
echo $name; //feilong
echo $my; //feilong.org
echo $addr; //feilong
$addr = 'jiaju99'; //$addr是与$name是传地址赋值,改变目标变量也会影响原始变量,反之亦然。
echo $name; //jiaju99
echo $addr; //jiaju99
?>

(三)变量与function关系

<?php
$zhe = 'feilong';
function zhege() {
echo 'nono'.$zhe; //函数内部不能直接调用 $zhe
}zhege();//只显示 nono
echo 'yesyes'.$zhe; //函数外 $zhe当然会被调
 
$na = 'org';
function nage($na) {//参数 $na 发生传递
echo '3 飞龙'.$na; //此时函数内部通过传递,调用 $na
}nage($na);//参数 $na 不能丢
?>

(四)动态变量

<?php
$var = 'mysite'; //变量$var_name 传值赋值,字符串
$$var = 'aneave.com'; //使用 $var 的值 作为变量名,即 $$var = $mysite
echo $var; //mysite
echo $$var; //aneave.com
echo $mysite; //aneave.com
?>

(五)全局变量
预定义变量:比较多,包括超级全局变量(Superglobals)

Superglobals — Superglobals are built-in variables that are always available in all scopes
$GLOBALS — References all variables available in global scope
$_SERVER — Server and execution environment information
$_GET — HTTP GET variables
$_POST — HTTP POST variables
$_FILES — HTTP File Upload variables
$_REQUEST — HTTP Request variables
$_SESSION — Session variables
$_ENV — Environment variables
$_COOKIE — HTTP Cookies

还有其它的
$php_errormsg — The previous error message
$HTTP_RAW_POST_DATA — Raw POST data
$http_response_header — HTTP response headers
$argc — The number of arguments passed to script
$argv — Array of arguments passed to script

二、开始测试公用或全局变量的运用

(一)首先,飞龙fuctions.php测试公用全局函数变量的n种定义方法

<?php
 
//1.fuctions.php中,定义公用函数
function goods(&$a) {
$a = '5';
}
//同时定义对应get函数,注意:这里没用global声明
function getgoods($b) {
return $b;
}
 
//2.或直接自定义函数 setgoodsid()
function setgoodsid() {
$goodsid = '5';//写在function里面
return $goodsid;
}
 
//3.或自定义函数 这次使用了global
$goodsid= '5'; //写在function外面
function getglobal_goodsid() {
global $goodsid;
return $goodsid;
}
 
//4. 这次不用global,也不用'&' ,而是用静态变量
function mylove() {
static $love = 'yinlinghua.com'; //函数内部,使用 static 标示$a为静态变量
return $love;
}
 
//5. 这次用 GLOBALS 全局变量数组 声明
$girlname = 'yilulu';
function girl() {
return $GLOBALS["girlname"]; //使用$GLOBALES["girlname"]数组,申明 $girlname 为全局变量
}
 
?>

(二)然后,相应的,在其它php文件比如sidebar.php,调用函数变量值的n种办法

<?php
 
//1.执行公用函数goods() 使函数里的变量$c得到赋值!
goods($c);
//然后显示$c
echo $c; //5
//或者,执行对应get函数
echo getgoods($c); //也是5
 
//2.直接取出setgoodsid()的值,似乎也可,不知稳定否?
echo setgoodsid();//也是5
 
//3.或者直接取出getglobal_goods()
echo getglobal_goodsid();//函数调用
global $goodsid; echo $goodsid;//也可以先global呼应一下变量,再调出变量
 
//4.直接取出静态变量值
echo mylove();//尚需进一步考证,似乎最理想?
 
//5. 全局变量数组$GLOBALS 调用方法
echo girl();//函数调用
echo $GLOBALS["girlname"]; //或者,直接调用全局变量数组$GLOBALS的 键girlname的值
global $girlname;echo $girlname;////或者,global申明呼应 $girlname为全局变量,然后调用 $girlname
 
?>

OK,blog()和getblog()的写法依样画葫芦吧?

更新网址:http://feilong.org/wordpress-define-global-var
最初发布:20101104 03:03:59 feilong.org 于广州

加入收藏夹,查看更方便。

所在分类: wordpress

新作:

旧文:

飞龙前端QQ群