You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress插件:如何控制已安装插件页「启用自动更新」链接显示?

关于WordPress插件「启用自动更新」链接的钩子与显示逻辑

WordPress中负责在已安装插件页面添加插件操作链接(包括「启用自动更新」)的核心钩子是plugin_action_links_{$plugin_file},其中{$plugin_file}是你的插件主文件路径(比如your-plugin/your-plugin.php)。

默认情况下,WordPress会在检测到插件有可用更新时,通过这个钩子自动注入「启用自动更新」链接;当插件更新至最新版本后,因为没有待处理的更新任务,WP会停止添加这个链接——这就是你看到链接消失的原因。

显示条件与Transient的关联

你猜测的没错,这个链接的显示确实和site_transient_update_plugins transient 直接相关:

  • 当你的自定义更新逻辑在site_transient_update_plugins中写入了该插件的可用更新数据时,WP会判定插件需要更新,进而触发自动更新链接的渲染。
  • 当插件处于最新版本时,site_transient_update_plugins中没有该插件的更新条目,WP的默认逻辑就不会添加这个链接。

自定义显示链接的方法

如果希望插件即使在最新版本时也显示自动更新相关链接,可以手动通过plugin_action_links_{$plugin_file}钩子添加,并结合auto_update_plugin过滤器控制自动更新的开关状态:

1. 添加自定义操作链接

// 替换为你的插件主文件路径
$plugin_basename = 'your-plugin-slug/your-plugin-main-file.php';

add_filter( "plugin_action_links_{$plugin_basename}", 'custom_plugin_auto_update_link' );
function custom_plugin_auto_update_link( $links ) {
    $auto_update_enabled = (bool) get_site_option( 'auto_update_plugins' )[ $plugin_basename ] ?? false;
    
    if ( $auto_update_enabled ) {
        $links[] = '<a href="' . wp_nonce_url( admin_url( 'plugins.php?action=disable-auto-update&plugin=' . $plugin_basename ), 'disable-auto-update_' . $plugin_basename ) . '" class="disable-auto-update">' . __( '禁用自动更新' ) . '</a>';
    } else {
        $links[] = '<a href="' . wp_nonce_url( admin_url( 'plugins.php?action=enable-auto-update&plugin=' . $plugin_basename ), 'enable-auto-update_' . $plugin_basename ) . '" class="enable-auto-update">' . __( '启用自动更新' ) . '</a>';
    }
    
    return $links;
}

2. 确保插件支持自动更新

通过auto_update_plugin过滤器让WordPress认可你的插件支持自动更新:

add_filter( 'auto_update_plugin', 'allow_custom_plugin_auto_update', 10, 2 );
function allow_custom_plugin_auto_update( $update, $plugin ) {
    // 替换为你的插件主文件路径
    if ( $plugin === 'your-plugin-slug/your-plugin-main-file.php' ) {
        return true; // 允许自动更新
    }
    return $update;
}

补充说明

  • 上述代码中的链接使用了WordPress内置的自动更新开关路由,确保和WP原生UI逻辑一致。
  • 如果你的自定义更新逻辑需要和WP自动更新系统深度整合,还需要确保site_transient_update_plugins中的数据格式符合WP的规范(包含new_version、package等字段)。

内容的提问来源于stack exchange,提问作者Suraj Sanwal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 00:05:12