シリーズ『WordPressのリンク取得方法』~

WordPressで現在表示のURLをパラメータを除いて取得する方法(改)

WordPressで現在表示のURLをパラメータを除いて取得する方法(改)



先程の記事で、全てのパラメータを取り除かれると、検索結果ページだとホームURLになってしまう問題。

WordPressで現在表示のURLをパラメータを除いて取得する方法 – モノグサにお灸
参考
WordPressで現在表示のURLをパラメータを除いて取得する方法 – モノグサにお灸

WordPressで投稿、ホーム、アーカイブを問わず、現在のURLを取得するには、 $current_url = ( empty( $_SERVER['HTTPS'] ) ? 'http:/…

WordPressで現在表示のURLをパラメータを除いて取得する方法 – モノグサにお灸 モノグサにお灸

もう少し改良して以下のようになりました。

if ( is_search() ) {
	$current_url = get_search_link();
} else {
	$current_url = home_url( add_query_arg( array() ) );
}
$current_url = strtok( $current_url, '?' );

まず、検索結果ページの場合にはget_search_link()で個別にURLを取得します。

その結果、通常だと

https://hogehoge.com/?s=検索ワード

https://hogehoge.com/search/検索ワード

のようなURlパラメータが無い状態のURLが生成されて取得されます。

また、前回の

global $wp;
$current_url = add_query_arg( $wp->query_string, '', home_url( $wp->request ) );

だと、

https://hogehoge.com/2018/12/post-title?year=2018&monthnum=12&name=post-title

のような余計なパラメータが付随しますが、今回はhome_url( add_query_arg( array() ) )と書くだけで現在のURLを取得出来ます。

ここから、用途に応じてstrtok( $current_url, '?' )で余分なURLパラメータを取り除けば完成です。

これで解決かな。

ちなみに、

$current_url = ( empty( $_SERVER['HTTPS'] ) ? 'http://' : 'https://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];

と書くと、エラーでは無いのですが、phpcsにかけると「non-sanitized」だとか「non-validated」警告が表示されますので、

$current_url = ';
if ( isset( $_SERVER['HTTP_HOST'] ) && isset( $_SERVER['REQUEST_URI'] ) ) {
	$current_url .= esc_url_raw( wp_unslash( $_SERVER['HTTP_HOST'] ) );
	$current_url .= esc_url_raw( wp_unslash( $_SERVER['REQUEST_URI'] ) );
	if ( is_ssl() ) {
		$current_url = str_replace( 'http', 'https', $current_url );
	}
}

と書くと大丈夫ぽいです。
多分。

今日はここまで
WordPressで現在表示のURLをパラメータを除いて取得する方法(改)

WordPressで現在表示のURLをパラメータを除いて取得する方法(改)


開発

先程の記事で、全てのパラメータを取り除かれると、検索結果ページだとホームURLになってしまう問題。 もう少し改良して以下のようになりました。 if ( is_search() ) { $current_url = get…


関連する記事



シリーズ『WordPressのリンク取得方法』



こちらはいかが?


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*(必須)

*(必須・表示されません)