我是wordpress的新手,我想在我的插件中添加激活挂钩。我想运行函数而不是从激活挂钩放置的同一个文件。可能吗?我试过了:
dy_ressel.php(主插件文件):
$my_variable_for_identify_dir = plugin_dir_url( __FILE__ ) ;
register_activation_hook( $my_variable_for_identify_dir.'install.php','install_dy_ressel');
并安装.php
function install_dy_ressel(){
global $wpdb;
// Добавить к названию будущих табли префикс WP
$table_users = $wpdb->prefix . "dy_users";
// ПРоверка по наличию таблиц. Если нету или удалены - создать.
if($wpdb->get_var("SHOW TABLES LIKE '$table_users'") != $table_users) {
$sql = "CREATE TABLE " . $table_users . " (
id mediumint(9) NOT NULL AUTO_INCREMENT,
time bigint(11) DEFAULT '0' NOT NULL,
name tinytext NOT NULL,
text text NOT NULL,
url VARCHAR(55) NOT NULL,
UNIQUE KEY id (id)
);";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
}
答案 0 :(得分:7)
我想运行的功能不是来自放置激活挂钩的同一文件。
你回答了自己的问题。
您只需将激活挂钩放在主插件文件中即可。但它可以在任何地方的功能,只要文件包含在WordPress调用之前。
您的主插件文件可能包含:
include( 'initialize-plugin.php' );
register_activation_hook( __FILE__, 'install_dy_ressel' );
您的initialize-plugin.php
可以拥有以下功能:
function install_dy_ressel() {
...
答案 1 :(得分:1)
register_activation_hook
,只要您有一些方法可以将插件的主文件路径传达给那段代码。这是一个简单的方法:
index.php
(或者您称之为插件的主要文件):
define('MYPLUGIN_MAIN_FILE_PATH', __FILE__);
require_once(__DIR__ . '/install.php');
install.php
:
function install_my_plugin() {
// do stuff.
}
register_activation_hook(MYPLUGIN_MAIN_FILE_PATH, 'install_my_plugin');
答案 2 :(得分:0)
dy_ressel.php
include_once dirname( __FILE__ ).'/install.php';
register_activation_hook( __FILE__, array( 'Register', 'install_dy_ressel' ) );
install.php了:
Class Register {
static function install_dy_ressel() {
//register some short codes;
}
static function uninstall_dy_ressel {
//unregister previous short codes;
}
}