現在のページの正しいURLを自動的に取得するためのWP関数はありますか? 1つの投稿を開いたばかりの場合、この関数はget_permalink()
と同じ値を返しますが、ページのページ番号付きインスタンスの場合(コメントを介してページ番号を付ける場合)、関数はget_pagenum_link(get_query_var('paged'))
と同じ結果を返します。
コーデックスを検索しましたが、探しているものが見つかりませんでした。 (しかしget_pagenum_link()
でさえ文書化されていません。)
この関数 については知っていますが、その仕事をする「ネイティブな」WP関数があったら嬉しいです。
前もって感謝します!よろしく、ルネ
Rajeev Vyasの答えに加えて、空でないパラメータをadd_query_arg()
に渡す必要はありません。以下は私にとっていつもうまくいっています:
// relative current URI:
$current_rel_uri = add_query_arg( NULL, NULL );
// absolute current URI (on single site):
$current_uri = home_url( add_query_arg( NULL, NULL ) );
関数は$_SERVER[ 'REQUEST_URI' ]
にフォールバックし、それにurlencode_deep()
を適用します。 https://github.com/WordPress/WordPress/blob/3.8/wp-includes/functions.php#L673 を参照してください。
編集: $_SERVER[ 'REQUEST_URI' ]
はフィルタ処理されていないユーザ入力を表すので、コンテキストが変更されたときは常にadd_query_arg()
の戻り値をエスケープする必要があります。たとえば、DBを使用する場合はesc_url_raw()
、HTMLを使用する場合はesc_attr()
またはesc_url()
を使用します。
更新
home_url()
はパスセグメントを含む完全なURIを返すので、絶対スキーム(スキームとホストを含む)を作成すべき示された例はサブディレクトリを持つマルチサイトでは動作しません。マルチサイト対応のコードのためのより良い解決策はこれでしょう:
// absolute URI in multisite aware environment
$parts = parse_url( home_url() );
$current_uri = "{$parts['scheme']}://{$parts['Host']}" . add_query_arg( NULL, NULL );
WordPressコアはマルチサイトのサイトURLでポート、ユーザー、パスワードをサポートしていませんので、これで十分です。
global $wp;
$current_url = add_query_arg( $wp->query_string, '', home_url( $wp->request ) );
機能ではありませんが、間違いなくワードプレスコードを使用します。
1)$_SERVER['REQUEST_URI']
-スクリプトを実行しているページにアクセスするためのURLを返します。ページにアクセスするためにhttp://www.example.com/product.php?id=5
と入力する必要がある場合、$_SERVER['REQUEST_URI']
は/product.php?id=5
を返します。
2)$_SERVER['DOCUMENT_ROOT']
–サーバーの構成ファイルで指定されたサーバーのルートディレクトリを返します。この変数は通常、Linuxでは/usr/yoursite/www
、WindowsではD:/xamps/xampp/htdocs
などのパスを返します。
3)$_SERVER['HTTP_Host']
– httpヘッダーにあるホストの名前を返します。この変数は通常、ブラウザのアドレスバーにexample.com
が見つかったときにhttp://example.com
のようなパスを返し、アドレスバーにwww.example.com
が表示されたときにhttp://www.example.com
を返します。 http://example.com
に保存されたセッションはhttp://www.example.com
のセッションと同じではないため、PHPを使用してオンライン支払いを行いながらセッションを保持する必要がある場合、これは非常に便利です。
4)$_SERVER['HTTP_USER_AGENT']
-Webページにアクセスしているユーザーエージェント(ブラウザー)の詳細を返します。 strpos($_SERVER["HTTP_USER_AGENT"],”MSIE”)
を使用してMicrosoft Internet Explorerを検出するか、strpos($_SERVER["HTTP_USER_AGENT"],”Firefox”)
を使用してPHPでfirefoxブラウザーを検出できます。
5)$_SERVER['PHP_SELF']
-現在実行中のスクリプトのファイル名を返します。 URL http://www.example.com/product.php?id=5
にアクセスし、$_SERVER['PHP_SELF']
がスクリプトで/product.php
を返すとします。
6)$_SERVER['QUERY_STRING']
–現在実行中のスクリプトへのアクセスにクエリ文字列が使用されている場合、クエリ文字列を返します。クエリ文字列は、「?」記号の後に使用できる文字列です。次のURL $_SERVER['QUERY_STRING']
を実行するスクリプトでhttp://www.example.com/index.php?id=5&page=product
を使用すると、スクリプトでid=5&page=product
が返されます。
7)$_SERVER['REMOTE_ADDR']
–現在のページにアクセスしているリモートマシンのIPアドレスを返します。ただし、$_SERVER['REMOTE_ADDR']
に頼ってクライアントのマシンの実際のIPアドレスを取得することはできません。 PHPで実際のIPアドレスを取得する方法については、この記事を参照してください。
8)$_SERVER['SCRIPT_FILENAME']
-現在実行中のファイルの絶対パスを返します。 Linuxではvar/example.com/www/product.php
のようなパスを返し、WindowsではD:/xampp/xampp/htdocs/test/example.php
のようなパスを返します。
私にとっては<?php esc_url(the_permalink()); ?>
は動作します(ページネーションのあるアーカイブページで)。
add_query_args( null, null )
空のキー ($qs[""] = null
)を持つ配列要素を作成しますが、結果には影響しません。
に従ってadd_query_arg()|機能| WordPress開発者用リソース 、2番目、3番目のパラメータはオプションであり、省略可能です。
add_query_args( null, null )
は より短く になります。
$current_url = add_query_args( [] );
最短バージョン もありますが、1番目のパラメーターが必須パラメーターなのでお勧めできません。
$current_url = add_query_args();
さらに、WordPressがサブディレクトリにインストールされている場合、home_url( add_query_vars( [] ) )
とhome_url( add_query_arg( null, null ) )
の両方が実際のURL を返さないことがあります。
例えばWordPressがhttps://example.com/wp/wp/foo
にインストールされている場合、https://example.com/wp/
が返されることがあります。
更新:2017/01/23
私のバージョンは、絶対URLを取得するためのDavidのソリューションに基づいています。
$parts = parse_url(home_url());
$uri = $parts['scheme'] . '://' . $parts['Host'];
if (array_key_exists('port', $parts)) {
$uri .= ':' . $parts['port'];
}
$uri .= add_query_arg([]);
wp_guess_url はあなたが探しているものです。
サイトのURLを推測します。
Wp-adminディレクトリにない戻りURLのみを取得するために、wp-adminリンクを削除します。