我正在尝试构建我的第一个WordPress插件,并且已经使用add_menu_page()创建了管理菜单标签,并且在我的functions.php文件中具有可调用函数的内容。为了我的生命,我似乎无法添加任何javascript函数,也无法链接到同一插件目录中的外部php页面。
其他任何人都可以做到吗?
谢谢!
这是一个代码示例。代码有点笨拙,我想知道是否有一种方法可以改善此/
function mt_sublevel_page() {
echo "<h2>" . __( 'Welcome', 'menu-test' ) . "</h2>";
echo '<div class="wrap">';
echo '<input type="button" value="Text Button" onclick="demo()" style="background-color:blue;">';
echo '</div>';
echo '<p class="test"></p>';
echo '<script>';
echo 'function demo() {var x = "Hello";document.getElementId("test").innerHTML=x;}';
echo '<script>';
}
答案 0 :(得分:1)
通常,这是我为管理页面加载“标记”文件的方式:
首先,将您的管理页面功能注册到admin_menu
挂钩:
// Standard PHP Structure:
add_action( 'admin_menu', 'register_admin_page' );
// Using a Class Based structure
add_action( 'admin_menu', [$this, 'register_admin_page'] );
然后定义您的管理页面功能:
// Standard PHP Structure
function register_admin_page(){
add_menu_page( 'My Plugin', 'My Plugin', 'edit_posts', 'my-plugin', 'admin_markup', 'some-dashicon' );
}
// Class Based PHP Structure
public function register_admin_page(){
add_menu_page( 'My Plugin', 'My Plugin', 'edit_posts', 'my-plugin', [$this, 'admin_markup'], 'some-dashicon' );
}
现在,您可以定义admin_markup
函数了:
function admin_markup(){
require_once dirname(__FILE__).'/admin-markup.php';
}
这会导致您出现以下情况:
add_action( 'admin_menu', 'register_admin_page' );
function register_admin_page(){
add_menu_page( 'My Plugin', 'My Plugin', 'edit_posts', 'my-plugin', 'admin_markup', 'some-dashicon' );
}
function admin_markup(){
require_once dirname(__FILE__).'/admin-markup.php';
}
现在,在admin-markup.php
文件中,您可以使用admin_enqueue_scripts()
函数来加载脚本和样式以根据需要设置页面样式。