我的Wordpress主题目录中有这个功能:
function variable($value) {
$country_code = '';
require_once("geoip.inc");
$gi = geoip_open(dirname(__FILE__)."/GeoIP.dat",GEOIP_STANDARD);
$country_code = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']);
geoip_close($gi);
switch ($value) {
case 'prem_no':
if ($country_code == 'US') { $prem_no = '888-888-8888'; }
elseif ($country_code == 'AU') { $prem_no = '1900 000 000'; }
else { $prem_no = '0906 636 4355'; }
return $prem_no;
break;
case 'prem_rate':
if ($country_code == 'US') { $prem_rate = '$3.50'; }
elseif ($country_code == 'AUS') { $prem_rate = '$3.96'; }
else { $prem_rate = '£1.53'; }
return $prem_rate;
break;
case 'local_no':
if ($country_code == 'US') { $local_no = '755-555-5555'; }
elseif ($country_code == 'AUS') { $local_no = '1800 000 000'; }
else { $local_no = '0207 111 6311'; }
return $local_no;
break;
case 'sms_no':
if($country_code == 'AUS') { $sms_no = '1977 1977'; }
else { $sms_no = '78887'; }
return $sms_no;
break;
case 'sms_rate':
if($country_code == 'AUS') { $sms_rate = '25c'; }
else { $sms_rate = '£1.50'; }
return $sms_rate;
break;
case 'helpline':
if($country_code == 'US') { $helpline = '700-777-7777'; }
elseif ($country_code == 'AUS') { $helpline = '1700 000 000'; }
else { $helpline = '0207 111 6210'; }
return $helpline;
break;
default:
break;
}
}
这适用于普通页面,并加载上面列出的所有文件,并且交换机正常工作。但是,当我去查看博客文章时,我只得到一个空白页面,其中包含错误消息:
警告:fopen(GeoIP.dat):无法打开流:第314行的C:\ wamp \ www \ clairvoyant \ wp-content \ themes \ clairvoyant \ geoip.inc中没有此类文件或目录
我无法理解为什么普通网页和博客页面会有所不同。
我知道有单独的PHP文件,但它们都使用相同的函数文件,对吧?
它无法找到的GeoIP.dat,它在上周之前就是在我在文件名之前添加dirname( FILE )之前执行此操作。
我能想到的唯一区别是,我的永久链接有/ blog /%postname%的自定义结构 - / blog是否会以某种方式影响路径?
关于为什么它在博客页面上没有按预期工作的任何想法?
更新:
这是geoip.inc中的相关功能:
function geoip_open($filename, $flags) {
$gi = new GeoIP;
$gi->flags = $flags;
if ($gi->flags & GEOIP_SHARED_MEMORY) {
$gi->shmid = @shmop_open (GEOIP_SHM_KEY, "a", 0, 0);
} else {
$gi->filehandle = fopen($filename,"rb") or die( "Oops! Can not open $filename\n" );
if ($gi->flags & GEOIP_MEMORY_CACHE) {
$s_array = fstat($gi->filehandle);
$gi->memory_buffer = fread($gi->filehandle, $s_array['size']);
}
}
$gi = _setup_segments($gi);
return $gi;
}
BUMP:有人可以对此有所了解吗?在查看博客页面时,Wordpress似乎正在剥离$ filename的路径。查看普通页面时,包含完整路径。
答案 0 :(得分:0)
我终于找到了在页面之间创建不同输出的内容。
使用单独的index.php文件生成wordpress博客页面而不是其他页面 - 这取决于我使用的模板的工作方式。
在博客index.php模板上,文件名实际上被硬编码到索引文件中。
删除了,现在只是在两者中都使用了这个功能,一切都很好!
感谢所有人的帮助