插件激活后重新声明函数

时间:2020-03-02 作者:Thibault

堆栈上的第一个问题。

我为一个学校项目制作了一个wordpress主题,我有一个问题,我无法独自解决。

我制作了一个需要ACF的主题(里面有一些调用get\\u field()和the\\u field()。但当我激活我的主题时,如果acf未启用,我会遇到一些错误。所以我决定找到一个解决方案,并在函数中设置一个条件。php

    if (!function_exists(\'get_field\')) {
    function get_field()
    {
        return;
    }
}

if (!function_exists(\'the_field\')) {
    function the_field()
    {
        return;
    }
}
所以我加上http://tgmpluginactivation.com/ 在我的主题中也可以告诉用户,需要ACF才能从我的主题中安装。

安装时一切正常,但当我想激活插件时:

Fatal error: Cannot redeclare get_field() (previously declared....)
我知道我之前在函数中声明了get\\u field()和the\\u field()。但是现在,是否可以用新的ACF函数删除我以前的声明?

我之前在堆叠板上检查过,但没有发现任何东西:(

非常感谢!

1 个回复
SO网友:Thibault

好的,有帮助,它起作用了。因此,主题在wordpress面前是可以的,但无法加载到管理中,因此我们通过以下方式更改了之前的条件:

if (!function_exists(\'get_field\') && !is_admin()) {
    function get_field()
    {
        return;
    }
    function the_field()
    {
        return;
    }
}
但在管理员中激活时也存在同样的问题,因为我在函数中使用了acf。php也是。

if (!empty(get_post(get_field(\'login\', \'options\')))) {
更改时间:

if( get_option(\'login\') ) {

相关推荐

AJAX回调函数可以访问在初始页面加载期间定义的PHP变量吗?

我已经编写了一个自定义插件。加载“我的网站”上的a页时:我的插件的主PHP准备数据发送到页面。在执行此文件的过程中,会定义一个PHP变量并为其赋值($myvar).</在页面加载过程中,会对我的服务器进行AJAX调用,服务器会执行一个定制的PHP回调函数我想让PHP回调函数知道$myvar. 这可能吗?如果是这样,是明智的,还是可能不标准和/或有风险?一种迂回的方法是将$myvar发送到浏览器,以便通过JavaScript(使用wp_localize_script()), 然后在AJAX调用期间将