2

wp-admin/admin ダッシュボードで現在のページの URL を取得しようとしていますが、可能ですか?

これらのコードを使用しようとしていますが、機能させることができないようです。

global $wp;
$current_page = add_query_arg( $wp->query_vars, home_url( $wp->request ) );

私が欲しかった出力は次のようになります:https://example.com/1/wp-admin/admin.php?page=test しかし、代わりに、出力は次のようになります:/1/wp-admin/admin.php?page=test&=https://example.com/1

どんな助けでも大歓迎です

4

3 に答える 3

1

グローバル$pagenowまたは$typenowを使用して、現在の管理ページを取得できます。

たとえば、 のみをターゲットedit.php?post_type=pageにする場合は、次の を使用できます。

global $pagenow, $typenow;
  if( ! is_admin() || 'edit.php' !== $pagenow || 'page' !== $typenow ) return;
于 2021-12-15T13:36:14.760 に答える
0

http_build_query()関数を使用して、非常に便利なソリューションを見つけました。

$current_page = admin_url(sprintf('admin.php?%s', http_build_query($_GET)));

http_build_query()$_GETを使用してベース管理 URL に追加できるクエリ文字列にすべてのパラメータを自動的に変換しますsprintf()

ただし、これは別の名前のページをサポートしていません (例:edit.phpの代わりにadmin.php)。代わりに、ヘルパー関数として次のようなものを使用して、すべての管理ページをサポートできます。

/**
 * Get the base URL of the current admin page, with query params.
 *
 * @return string
 */
function get_current_admin_url(): string
{
    return admin_url(sprintf(basename($_SERVER['REQUEST_URI'])));
}

# on your admin page..
$current_page = get_current_admin_url();

この関数の使用に注意してください。URL はエンド ユーザーによって操作される可能性があります /!\

于 2021-09-23T06:25:38.433 に答える