Всем привет,
Пытаюсь запустить свой старый проект на WordPress 4.6 с PHP Version 7.0.8-0ubuntu0.16.04.2
и не запускается пользовательская функция активации плагина которая была завернута в обьект :
if (!class_exists('ArtistsSongs')) {
class ArtistsSongs {
protected $m_plugin_name;
protected $m_plugin_dir;
protected $m_plugin_url;
public function __construct()
{
DebToFile('__construct $_GET::'.print_r($_GET,true));
DEFINE('ArtistsSongs', true); // Pluging is inited
...
$this->m_plugin_name = "/wp-admin/options-general.php?page=". plugin_basename(__FILE__);
$this->m_plugin_dir = trailingslashit(WP_PLUGIN_DIR.'/'.dirname(plugin_basename(__FILE__)));
$this->m_plugin_url = trailingslashit(WP_PLUGIN_URL.'/'.dirname(plugin_basename(__FILE__)));
DebToFile('__construct $this->m_plugin_name::'.print_r($this->m_plugin_name,true));
DebToFile('__construct $this::'.print_r($this,true));
register_activation_hook( $this->m_plugin_name, array($this, 'activate') );
register_deactivation_hook( $this->m_plugin_name, array($this, 'deactivate') );
// register_activation_hook( $this->m_plugin_name, array(&$this, 'activate') ); //Изначально с 5php был вызов с адрессацией
// register_deactivation_hook( $this->m_plugin_name, array(&$this, 'deactivate') );
if ( is_admin() ) { // That is admin page
...
public function activate()
{
DebToFile('-InitDBStructure activate ::' .print_r(1111,true) );
global $wpdb;
ob_start();
$ArtistsSongsDBObj = new ArtistsSongsDB( $wpdb, $this->m_plugin_dir, $this->m_plugin_url );
DebToFile('-0 activate $ArtistsSongsDBObj::' .print_r($ArtistsSongsDBObj,true) );
$ret= $ArtistsSongsDBObj->InitDBStructure(true);
$output = ob_get_contents ();
ob_end_clean ();
DebToFile('-InitDBStructure $output ::' .print_r($output,true) );
return $ret;
}
public function deactivate()
{
DebToFile('-InitDBStructure deactivate ::' .print_r(222222,true) );
global $wpdb;
$ArtistsSongsDBObj = new ArtistsSongsDB($wpdb);
$ret= $ArtistsSongsDBObj->ClearDBStructure();
nsnClass_appData::deactivatePlugins( array('nsn-source-selection/nsn-source-selection-plugin.php', 'nsn-voting-reports/nsn-voting-reports-plugin.php' ) );
return $ret;
}
...
DebToFile – функция вывода отладочной инфы в файл и получается такой вывод :
__construct $_GET::Array
(
[action] => activate
[plugin] => artistssongs/artists-songs-plugin.php
[plugin_status] => all
[paged] => 1
[s] =>
[_wpnonce] => d30f14ba11
)
__construct $this->m_plugin_name::/wp-admin/options-general.php?page=artistssongs/artists-songs-plugin.php
__construct $this::ArtistsSongs Object
(
[m_plugin_name:protected] => /wp-admin/options-general.php?page=artistssongs/artists-songs-plugin.php
[m_plugin_dir:protected] => /mnt/_work_sdb8/wwwroot/wp-songs/wp-content/plugins/artistssongs/
[m_plugin_url:protected] => http://local-wp-songs.com/wp-content/plugins/artistssongs/
)
То есть, срабатывает конструктор обьекта но нет вызова пользовательской функции активации…
Не понятно из-за чего? Я просмотрел новые фичи как WordPress 4.6 так и PHP 7 но не вижу из-за чего может быть проблема…
Спасибо!