我使用自定义主题的Wordpress。
在主题的header.php顶部,我有一个Mobile Detect脚本。
require_once '/extras/Mobile_Detect.php';
$detect = new Mobile_Detect;
然后在header.php页面的下方,我有一行检查用户是否在Mobile上,并相应地显示不同的内容。
if ($detect->isMobile()) { echo "Premium"; } else { echo variable('prem_no'); }
但是,当我尝试使用相同的脚本时,在页面下方的另一个包含的PHP文件中:
if ($detect->isMobile()) { echo "Find a psychic"; } else { echo "Our Psychic Readers"; }
我收到此错误:
致命错误:在第1行的C:\ wamp \ www \ clairvoyant \ extras \ reader-categories.php中的非对象上调用成员函数isMobile()
我怎样才能使header.php文件中所需或包含的文件可以在其余的页面文件中引用?
我在include,include_once,require和require_once之间有点混淆,所以有人可以帮忙解决这个问题吗?
答案 0 :(得分:2)
require
和include
之间没有太多差异,但主要问题是require
文件必须存在,否则您会收到错误,而include是可选的。
而_once
是为了确保您不会超过once
。
然而,在我进一步包含在页面下方的PHP文件中 尝试使用相同的脚本我收到此错误...
这听起来像$detect
不是同一个对象,例如
require_once '/extras/Mobile_Detect.php';
$detect = new Mobile_Detect;
if ($detect->isMobile()) { echo "Premium"; }//Good
....
$detect['mobile'] = 'iPhone';
if ($detect->isMobile()) { echo "Find a psychic"; }//Bad
答案 1 :(得分:0)
我的猜测是,$detect
行的某个地方正在重置为其他内容。搜索$detect
的所有实例并查找使用单个等号而不是双倍或三倍的内容。它也可能是另一个包含重置它的地方。
如果变量$detect
没有存在,那么您会收到不同的通知Undefined variable: detect
。
如果$detect
是有效对象,但该方法已不存在,则您会收到Fatal error: Call to undefined method Mobile_Detect::isMobile
。
但是,您的错误表明您使用的变量不是对象,因此首先不能拥有成员函数。