我找不到任何插件可以做到这一点,也找不到任何有人问这个问题的线程,所以它要么非常困难,要么非常简单。
注意: 这不适用于管理页面内的 ajax 加载面板/选项卡菜单,这适用于整个 WP 后端管理菜单,无论速度和潜在问题如何。菜单项,例如:仪表板、页面、帖子、用户等
我问了 GPT3.5,这就是我得到的,有人可以确认这是否是正确的方法吗?
在您的主题或插件中排队 jQuery: 确保 jQuery 在您的主题或插件中排队。 WordPress 默认包含 jQuery,但如果需要,您可能需要显式检查和排队。
phpCopy code
function enqueue_custom_scripts() { wp_enqueue_script('jquery'); } add_action('wp_enqueue_scripts', 'enqueue_custom_scripts');
为您的 AJAX 功能创建一个 JavaScript 文件: 创建一个 JavaScript 文件(例如,
custom-admin-ajax.js
)并将其排入您的主题或插件中。该文件将包含您的 AJAX 逻辑。
javascriptCopy code
jQuery(document).ready(function($) { // AJAX request to load WordPress admin menu $.ajax({ url: ajaxurl, data: { action: 'load_admin_menu', }, success: function(response) { // Update the menu with the response $('#adminmenuwrap').html(response); } }); });
创建一个 PHP 函数来处理 AJAX 请求: 在主题的
functions.php
文件或自定义插件中,添加一个 PHP 函数来处理 AJAX 请求。
phpCopy code
function load_admin_menu_callback() { // Your code to generate the admin menu ob_start(); require_once ABSPATH . 'wp-admin/menu-header.php'; // Include WordPress menu header $menu = ob_get_clean(); // Send the generated menu as the AJAX response echo $menu; wp_die(); // Always include this to terminate the script properly } add_action('wp_ajax_load_admin_menu', 'load_admin_menu_callback');
在此示例中,我们使用
ob_start()
来缓冲 menu-header.php
的输出,然后将其作为 AJAX 响应发送。
挂钩 JavaScript 文件并本地化 AJAX URL: 将 JavaScript 文件排队并在主题的
functions.php
或自定义插件中本地化 AJAX URL。
phpCopy code
function enqueue_custom_scripts() { wp_enqueue_script('custom-admin-ajax', get_template_directory_uri() . '/js/custom-admin-ajax.js', array('jquery'), null, true); wp_localize_script('custom-admin-ajax', 'ajaxurl', admin_url('admin-ajax.php')); } add_action('wp_enqueue_scripts', 'enqueue_custom_scripts');
wp_localize_script
函数用于将数据从 PHP 传递到 JavaScript。在本例中,我们将包含 URL 的 ajaxurl
变量传递给 admin-ajax.php
。
现在,当页面加载时,它将通过操作
admin-ajax.php
触发对 load_admin_menu
的 AJAX 请求。服务器将响应生成的管理菜单,JavaScript 将更新页面上的菜单。
我试图找到一个可以为后端执行此操作的插件或主题,但 Menu Editor Pro 不会执行此操作,并且 Adminify 仅使用 ajax 加载子菜单项,但在单击时会重新加载页面。
是的,应该可以,可能需要调整,但你需要运行它。
ob_start 函数允许您加载 PHP 文件,但不将其包含在任何输出中,因为它会被缓冲。
ob_end_clean 函数获取缓冲内容,以便该行将内容放入变量中。
您可能只想找到它通常在模板中加载的位置,然后将其注释掉/用您的响应替换它。
总体来说看起来不错。