函数文档

wp_link_manager_disabled_message()

💡 云策文档标注

概述

wp_link_manager_disabled_message() 函数用于在 WordPress 链接管理器被禁用时输出相关消息。它检查当前页面和用户权限,并根据插件状态(未安装或未激活)提供相应的安装或激活链接,否则显示权限错误。

关键要点

  • 函数仅在特定管理页面(如 link-manager.php)触发,通过检查 $pagenow 变量实现。
  • 使用 add_filter() 临时设置 link_manager_enabled 选项为 true,以准确判断用户是否有 manage_links 权限。
  • 根据插件状态(通过 get_plugins() 和 is_plugin_inactive() 检查)和用户能力(如 install_plugins 或 activate_plugins),输出定制化的 wp_die() 消息。
  • 如果用户无权限或插件问题未解决,最终显示默认的权限错误消息。

代码示例

function wp_link_manager_disabled_message() {
    global $pagenow;

    if ( ! in_array( $pagenow, array( 'link-manager.php', 'link-add.php', 'link.php' ), true ) ) {
        return;
    }

    add_filter( 'pre_option_link_manager_enabled', '__return_true', 100 );
    $really_can_manage_links = current_user_can( 'manage_links' );
    remove_filter( 'pre_option_link_manager_enabled', '__return_true', 100 );

    if ( $really_can_manage_links ) {
        $plugins = get_plugins();

        if ( empty( $plugins['link-manager/link-manager.php'] ) ) {
            if ( current_user_can( 'install_plugins' ) ) {
                $install_url = wp_nonce_url(
                    self_admin_url( 'update.php?action=install-plugin&plugin;=link-manager' ),
                    'install-plugin_link-manager'
                );

                wp_die(
                    sprintf(
                        __( 'If you are looking to use the link manager, please install the Link Manager plugin.' ),
                        esc_url( $install_url )
                    )
                );
            }
        } elseif ( is_plugin_inactive( 'link-manager/link-manager.php' ) ) {
            if ( current_user_can( 'activate_plugins' ) ) {
                $activate_url = wp_nonce_url(
                    self_admin_url( 'plugins.php?action=activate&plugin;=link-manager/link-manager.php' ),
                    'activate-plugin_link-manager/link-manager.php'
                );

                wp_die(
                    sprintf(
                        __( 'Please activate the Link Manager plugin to use the link manager.' ),
                        esc_url( $activate_url )
                    )
                );
            }
        }
    }

    wp_die( __( 'Sorry, you are not allowed to edit the links for this site.' ) );
}

注意事项

  • 此函数自 WordPress 3.5.0 版本引入,主要用于处理链接管理器插件的禁用场景。
  • 依赖于多个核心函数,如 current_user_can()、wp_die() 和 wp_nonce_url(),确保安全性和用户界面一致性。
  • 开发者应避免直接调用此函数,除非在自定义插件或主题中需要模拟类似行为。

📄 原文内容

Outputs the ‘disabled’ message for the WordPress Link Manager.

Source

function wp_link_manager_disabled_message() {
	global $pagenow;

	if ( ! in_array( $pagenow, array( 'link-manager.php', 'link-add.php', 'link.php' ), true ) ) {
		return;
	}

	add_filter( 'pre_option_link_manager_enabled', '__return_true', 100 );
	$really_can_manage_links = current_user_can( 'manage_links' );
	remove_filter( 'pre_option_link_manager_enabled', '__return_true', 100 );

	if ( $really_can_manage_links ) {
		$plugins = get_plugins();

		if ( empty( $plugins['link-manager/link-manager.php'] ) ) {
			if ( current_user_can( 'install_plugins' ) ) {
				$install_url = wp_nonce_url(
					self_admin_url( 'update.php?action=install-plugin&plugin;=link-manager' ),
					'install-plugin_link-manager'
				);

				wp_die(
					sprintf(
						/* translators: %s: A link to install the Link Manager plugin. */
						__( 'If you are looking to use the link manager, please install the <a href="%s">Link Manager plugin</a>.' ),
						esc_url( $install_url )
					)
				);
			}
		} elseif ( is_plugin_inactive( 'link-manager/link-manager.php' ) ) {
			if ( current_user_can( 'activate_plugins' ) ) {
				$activate_url = wp_nonce_url(
					self_admin_url( 'plugins.php?action=activate&plugin;=link-manager/link-manager.php' ),
					'activate-plugin_link-manager/link-manager.php'
				);

				wp_die(
					sprintf(
						/* translators: %s: A link to activate the Link Manager plugin. */
						__( 'Please activate the <a href="%s">Link Manager plugin</a> to use the link manager.' ),
						esc_url( $activate_url )
					)
				);
			}
		}
	}

	wp_die( __( 'Sorry, you are not allowed to edit the links for this site.' ) );
}

Changelog

Version Description
3.5.0 Introduced.