首页 > 解决方案 > Wordpress 插件仅适用于本地主机(不适用于远程主机)

问题描述

我有一个使用 OOP 的插件,它可以在我的本地主机上完美运行,但不能在我的 Bluehost 服务器上运行。它不需要 Composer 自动加载以外的任何依赖项(我已将 composer 生成的供应商文件夹和 json 上传到远程插件文件夹)。我知道插件正在激活,因为它正在为我的 wp_options 生成空数据库条目。但是我的 add_menu_page 函数没有在我的管理仪表板中生成选项页面。

  1. 我确保本地主机和远程主机运行相同版本的 PHP(7.2+)和 Wordpress(5.0.3)

  2. 我已经禁用了所有其他插件并尝试在二十九主题中使用 uding,所以我非常确信这不是由于冲突造成的。

  3. 我在 wp_config 中启用了调试并且没有收到任何错误。

  4. 我的 Bluehost 错误日志中没有错误

下面是我的 Dashboard.php 的示例....我只是发布它,因为缺少菜单选项是我未知错误的症状,但我不认为这是原因

<?php 
/**
* @package ICUPlugin
*/
namespace Inc\Pages;

use Inc\Api\SettingsApi;
use Inc\Base\BaseController;
use Inc\Api\Callbacks\AdminCallbacks;
use Inc\Api\Callbacks\ManagerCallbacks;

/**
* 
*/
class Dashboard extends BaseController
{   
public $settings;

public $callbacks;

public $callbacks_mgr;

public $pages = array();

//public $subpages = array();

public function register() 
{
    $this->settings = new SettingsApi();

    $this->callbacks = new AdminCallbacks();

    $this->callbacks_mgr = new ManagerCallbacks();

    $this->setPages();

    //$this->setSubpages();

    $this->setSettings();

    $this->setSections();

    $this->setFields();

    $this->settings->addPages( $this->pages )->withSubPage( 'Dashboard' 
    )->register();
 }

public function setPages() {
    $this->pages = array(
        array(
            'page_title' => 'ICU Plugin', 
            'menu_title' => 'ICU', 
            'capability' => 'manage_options', 
            'menu_slug' => 'icu_plugin', 
            'callback' => array( $this->callbacks, 'adminDashboard' ), 
            'icon_url' => 'dashicons-store', 
            'position' => 110
        )
    );
 }

public function setSettings() {
    $args = array(
        array(
            'option_group' => 'icu_plugin_settings',
            'option_name' => 'icu_plugin',
            'callback' => array( $this->callbacks_mgr, 'checkboxSanitize' 
          )
        )
    );

    $this->settings->setSettings( $args );
    }
    public function setSections() {
    $args = array(
        array(
            'id' => 'icu_admin_index',
            'title' => 'Settings Manager',
            'callback' => array( $this->callbacks_mgr, 
    'adminSectionManager' ),
            'page' => 'icu_plugin'
        )
    );

    $this->settings->setSections( $args );
 }

public function setFields() {
    $args = array();

    foreach( $this->settingsManagers as $key => $value ) {
        $args[] = array(
            'id' => $key,
            'title' => $value,
            'callback' => array( $this->callbacks_mgr, 'checkboxField' ),
            'page' => 'icu_plugin',
            'section' => 'icu_admin_index',
            'args' => array(
                'option_name' => 'icu_plugin',
                'label_for' => $key,
                'class' => 'ui-toggle'
            )
        );
    }

    $this->settings->setFields( $args );
}

}

标签: wordpressplugins

解决方案


推荐阅读