現在のページのURLを表示するにはどうすればよいですか?
-
-
このURLで何をしたいかについてのコンテキストを提供できますか?共有可能なURLを作成しようとしていますか?リンク/アクションのカスタムURLをアセンブルしますか?Can you provide some context as to what you would want to do with this URL? Are you trying to create sharable URLs? Assemble custom URLs for links/actions?
- 0
- 2017-07-25
- Tom J Nowell
-
@TomJNowell特定のJSスクリプトをキューに入れたいのですが、特定のページのみです(この場合、これらのページはさまざまな言語での私のサイトのホームページです:https://www.example.com/、https://www.example.com/fr/、https://www.example.com/es/など).JSファイルは、ホームページにのみ表示されるいくつかのタイトルへのハイパーリンクを追加するためにサーバーになります.@TomJNowell I would like to enqueue a particular JS script, but only on certain pages (in this case, those pages are the homepage of my site in various languages: https://www.example.com/, https://www.example.com/fr/, https://www.example.com/es/, etc). The JS file will server to add hyperlinks to several titles that appear only on the homepage.
- 0
- 2017-07-25
- cag8f
-
`is_home()`や `is_page( 'fr')`などを使用して、それがtrueの場合にのみスクリプトをキューに入れるのはなぜですか?why not just use `is_home()` or `is_page( 'fr' )` etc and only enqueue the script if it's true?
- 0
- 2017-07-25
- Tom J Nowell
-
@TomJNowellさて、私のコードは `if(home_url($ wp-> request)==home_url()){wp_enqueue_script();}`です.これは、言語に関係なく、すべてのホームページで発生するようです.それはあなたが提案していたことですか?@TomJNowell Well now my code is `if ( home_url( $wp->request ) == home_url() ) { wp_enqueue_script();}` This appears to fire on every home page, regardless of language. Is that what you were suggesting?
- 0
- 2017-07-26
- cag8f
-
`$ _SERVER ['REQUEST_URI']`と会社を使ってみませんか?この質問を参照してください:https://stackoverflow.com/q/6768793/247696Why not use `$_SERVER['REQUEST_URI']` and company? See this question: https://stackoverflow.com/q/6768793/247696
- 1
- 2019-05-29
- Flimm
-
10 回答
- 投票
-
- 2017-07-25
get_permalink()
は、単一のページと投稿にのみ役立ち、ループ内でのみ機能します.私が見た中で最も簡単な方法はこれです:
global $wp; echo home_url( $wp->request )
$wp->request
には、URLのパス部分が含まれます./path/to/page
とhome_url()
は[設定]> [一般]でURLを出力しますが、パスを追加できるため、リクエストパスをに追加します.このコードのホームURL.これは、パーマリンクがプレーンに設定されている場合はおそらく機能せず、クエリ文字列(URLの
?foo=bar
部分)が省略されることに注意してください.パーマリンクがプレーンに設定されているときにURLを取得するには、代わりに
$wp->query_vars
を使用してadd_query_arg()
に渡すことができます:global $wp; echo add_query_arg( $wp->query_vars, home_url() );
また、パーマリンクの設定に関係なく、これら2つの方法を組み合わせて、クエリ文字列を含む現在のURLを取得できます.
global $wp; echo add_query_arg( $wp->query_vars, home_url( $wp->request ) );
get_permalink()
is only really useful for single pages and posts, and only works inside the loop.The simplest way I've seen is this:
global $wp; echo home_url( $wp->request )
$wp->request
includes the path part of the URL, eg./path/to/page
andhome_url()
outputs the URL in Settings > General, but you can append a path to it, so we're appending the request path to the home URL in this code.Note that this probably won't work with Permalinks set to Plain, and will leave off query strings (the
?foo=bar
part of the URL).To get the URL when permalinks are set to plain you can use
$wp->query_vars
instead, by passing it toadd_query_arg()
:global $wp; echo add_query_arg( $wp->query_vars, home_url() );
And you could combine these two methods to get the current URL, including the query string, regardless of permalink settings:
global $wp; echo add_query_arg( $wp->query_vars, home_url( $wp->request ) );
-
パーマリンクがプレーンに設定されている場合: `echo '//'.$ _SERVER ['HTTP_HOST'].$ _SERVER ['REQUEST_URI']; `.If permalinks set to plain: `echo '//' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];`.
- 7
- 2017-07-25
- Max Yudin
-
@Jacob試してみましたが、ホームページのURLしか返ってこないようです.このページ(https://dev.horizonhomes-samui.com/properties/hs0540/)の左上にあるように、 `echo home_url($ wp-> request)`にコードを挿入しました.`global $ wp`も含めるようにしました.パーマリンクは「プレーン」ではなく、「投稿名」に設定されています.ログにも関連するPHPエラーはありません.この特定のページは私の開発サイトの一部であり、それ以外の場合は訪問者にブロックされています.それが重要かどうかはわかりません.編集:実際には、その考えを保持します-ユーザーエラーである可能性があります.待機する...@Jacob I tried that, but it seems to be returning the URL of my homepage only. As you can see in the top left on this page (https://dev.horizonhomes-samui.com/properties/hs0540/), where I have inserted code to `echo home_url( $wp->request )`. I have ensured to include `global $wp` as well. Permalinks are not 'Plain,' but set to 'Post Name.' I don't see any relevant PHP errors in the log either. This particular page is part of my dev site, which is otherwise blocked off to visitors. I'm not sure if that matters or not. edit: Actually, hold that thought--could be user error. Stand by...
- 2
- 2017-07-25
- cag8f
-
@Jacob編集2:OKあなたのコードは確かに機能します.私の問題は、functions.php'naked 'にコードを含めていた、つまりフックに接続されている関数には含めていなかったことです.そのため、ブラウザに表示されたページに関係なく、コードはホームページのURLを返していました.WPフック(wp_enqueue_scripts)にアタッチされた関数内のコードを移動すると、実際に表示されたページのURLが返されました.その行動の理由を知っていますか?そのために新しい質問を作成する必要があるかもしれません.@Jacob edit 2: OK your code does indeed work. My issue was that I was including the code in functions.php 'naked,' i.e. not in any function that is attached to a hook. So your code was returning the URL of the homepage, regardless of the page that was displayed in my browser. Once I moved the code inside a function--a function attached to a WP hook (wp_enqueue_scripts), it did indeed return the URL of the displayed page. Do you know the reason for that behavior? Maybe I need to create a new question for that.
- 1
- 2017-07-25
- cag8f
-
@ cag8fコードがfunctions.phpで「裸」になっている場合は、$ wpオブジェクトのすべてのプロパティが設定される前にコードを実行しています.適切なフックにアタッチされた関数でラップすると、Wordpressコードの適切なポイントが実行されるまで実行が遅れます.@cag8f If the code sits "naked" in functions.php then you are running it before all the properties of the $wp object have been set up. When you wrap it in a function attached to an appropriate hook then you are delaying its execution until a suitable point in the Wordpress code run.
- 3
- 2018-04-05
- Andy Macaulay-Brook
-
これらの方法はすべて素晴らしいものであり、WordPressを操作するための素晴らしいアイデアです.ただし、必要に応じて、 `trailingslashit()`を追加することもできます.These methods are all awesome, and great ideas for working with WordPress. You might add `trailingslashit()` to them though, depending on your needs.
- 0
- 2019-10-17
- Jake
-
- 2018-04-05
以下のコードを使用して、WordPressの現在のURL全体を取得できます.
global $wp; $current_url = home_url(add_query_arg(array(), $wp->request));
これにより、クエリパラメータを含むフルパスが表示されます.
You may use the below code to get the whole current URL in WordPress:
global $wp; $current_url = home_url(add_query_arg(array(), $wp->request));
This will show the full path, including query parameters.
-
こんにちは-https://developer.wordpress.org/reference/functions/add_query_arg/を見ると、コードが実際には既存のクエリパラメータを保持していないことがわかります.Hi - if you have a look at https://developer.wordpress.org/reference/functions/add_query_arg/ you'll see that your code doesn't actually preserve existing query parameters.
- 0
- 2018-04-05
- Andy Macaulay-Brook
-
クエリパラメータを保持するには、空の `array()`を `$ _GET`に置き換える必要があります.すなわち: `home_url(add_query_arg($ _ GET、$ wp-> request));`To preserve query parameters you'd need to replace the empty `array()` with `$_GET`. ie: `home_url(add_query_arg($_GET,$wp->request));`
- 5
- 2018-06-14
- Brad Adams
-
WordPressがサブディレクトリにインストールされている場合は機能しませんIt won’t work if WordPress is installed in subdirectory
- 0
- 2018-11-26
- ManzoorWani
-
- 2019-10-21
なぜ使用しないのですか?
get_permalink(get_the_ID());
Why not just use?
get_permalink(get_the_ID());
-
+1他のすべての答えは非常に複雑です.これは最も単純な解決策です.+1 all other answers are much to complicated, this is just the simplest solution
- 2
- 2020-04-16
- Mark
-
これが最も簡単な方法です.+1This is the easiest way. +1
- 1
- 2020-05-23
- Syafiq Freman
-
私のサイトのブログカテゴリでは機能しませんdoesn't work with blog categories on my site
- 0
- 2020-06-21
- Iggy
-
カテゴリページの場合は、 `get_category_link(get_query_var( 'cat'));`を使用します.For category pages, use `get_category_link( get_query_var( 'cat' ) );`
- 0
- 2020-06-23
- Dario Zadro
-
- 2018-12-28
次のコードは現在のURLを示します:
global $wp; echo home_url($wp->request)
以下のコードを使用して、クエリパラメータとともに完全なURLを取得できます.
global $wp; $current_url = home_url(add_query_arg(array($_GET), $wp->request));
これにより、クエリパラメータを含むフルパスが表示されます.これにより、すでにURLに含まれている場合、クエリパラメータが保持されます.
The following code will give the current URL:
global $wp; echo home_url($wp->request)
You can use the below code to get the full URL along with query parameters.
global $wp; $current_url = home_url(add_query_arg(array($_GET), $wp->request));
This will show the full path, including query parameters. This will preserve query parameters if already in the URL.
-
このスニペットは、現在のURLの `wp-admin/plugins.php`をスキップします.これは、ルートパスとクエリ文字列のみです.This snippet skips `wp-admin/plugins.php` in my current URL, it's only the root path and query strings.
- 0
- 2019-08-03
- Ryszard Jędraszyk
-
- 2018-11-29
function current_location() { if (isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1) || isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') { $protocol = 'https://'; } else { $protocol = 'http://'; } return $protocol . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; } echo current_location();
function current_location() { if (isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1) || isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') { $protocol = 'https://'; } else { $protocol = 'http://'; } return $protocol . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; } echo current_location();
-
このコードが問題を解決する方法と理由を説明できますか?Can you explain how and why this code solves the question?
- 0
- 2018-11-29
- kero
-
私の意見では、最も柔軟なソリューションです.これは、任意のWPページ(wp-admin、wp-login.php、アーカイブページなど)で機能します.URLパラメータが含まれていないことに注意してくださいIn my opinion the most flexible solution. It works on any WP page (even on wp-admin, wp-login.php, archive pages, etc). Just notice, that it does not include any URL params
- 0
- 2019-04-01
- Philipp
-
- 2018-06-11
これは、前述の改善された例です.きれいなURLが有効になっている場合は機能しますが、/page-slug/?param=1 のようなクエリパラメータがある場合、またはURLがまったく醜い場合は破棄されます.
次の例は両方の場合に機能します.
$query_args = array(); $query = wp_parse_url( $YOUR_URL ); $permalink = get_option( 'permalink_structure' ); if ( empty( $permalink ) ) { $query_args = $query['query']; } echo home_url( add_query_arg( $query_args , $wp->request ) )
This is an improved way of example that mentioned previously. It works when pretty URLs are enabled however it discards if there is any query parameter like /page-slug/?param=1 or URL is ugly at all.
Following example will work on both cases.
$query_args = array(); $query = wp_parse_url( $YOUR_URL ); $permalink = get_option( 'permalink_structure' ); if ( empty( $permalink ) ) { $query_args = $query['query']; } echo home_url( add_query_arg( $query_args , $wp->request ) )
-
- 2019-10-01
たぶん
wp_guess_url()
はあなたのものです必要.バージョン2.6.0以降で利用可能.Maybe
wp_guess_url()
is what you need. Available since version 2.6.0.-
これはベースURLを推測するだけです.フロントエンドでは、 `home_url()`と同様の効果が得られます.This just guesses the base URL. On the frontend, you end up with a similar effect to `home_url()`.
- 0
- 2019-10-17
- Jake
-
- 2020-04-04
単純なタスクについて多くの調査を行った後、上記のすべての回答を組み合わせることでうまくいきます.
function get_wp_current_url(){ global $wp; if('' === get_option('permalink_structure')) return home_url(add_query_arg(array($_GET), $wp->request)); else return home_url(trailingslashit(add_query_arg(array($_GET), $wp->request))); }
最後にスラッシュがないなど.現在のURLの出力に関する質問IDとして、これはセキュリティなどを気にしません.ただし、最後の#commentのようなハッシュはPHPでは見つかりません.
After so much research of a simple task, a mix of all answers above works for us:
function get_wp_current_url(){ global $wp; if('' === get_option('permalink_structure')) return home_url(add_query_arg(array($_GET), $wp->request)); else return home_url(trailingslashit(add_query_arg(array($_GET), $wp->request))); }
No missing slash at the end and so on. As the question id about output the current url, this doesnt care about security and stuff. However, hash like #comment at the end cant be found in PHP.
-
- 2020-07-15
これが私にとってうまくいったことです(URLにもクエリ文字列を含む短くてクリーンなソリューション):
$current_url = add_query_arg( $_SERVER['QUERY_STRING'], '', home_url( $wp->request ) );
出力URLは次のようになります
http://sometesturl.test/slug1/slug2?queryParam1=testing&queryParam2=123
ソリューションは
から取得されました.こちら This is what worked for me (short and clean solution that includes the query strings in the URL too):
$current_url = add_query_arg( $_SERVER['QUERY_STRING'], '', home_url( $wp->request ) );
The output URL will look like below
http://sometesturl.test/slug1/slug2?queryParam1=testing&queryParam2=123
The solution was taken from here
-
- 2020-07-28
これは古い質問だと思いますが、気付いたのは、
get_queried_object()
を使用して誰も言及していないことです.これは、現在のURLに関連するものをすべて取得するグローバルwp関数です.したがって、たとえば、ページまたは投稿を表示している場合は、投稿オブジェクトが返されます.アーカイブを使用している場合は、投稿タイプのオブジェクトが返されます.
WPには、
get_post_type_archive_link
など、オブジェクトの投稿タイプフィールドを指定して、そのようにリンクを取得できるヘルパー関数も多数あります.get_post_type_archive_link(get_queried_object()->name);
要点は、上記のハッカーの回答の一部に依存する必要はなく、代わりにクエリされたオブジェクトを使用して常に正しいURLを取得することです.
これは、wpの関数を使用することで、常に正しいURLを取得できるため、追加の作業なしでマルチサイトインストールでも機能します.
I realize this is an old question, however one thing I've noticed is no-one mentioned using
get_queried_object()
.It's a global wp function that grabs whatever relates to the current url you're on. So for instance if you're on a page or post, it'll return a post object. If you're on an archive it will return a post type object.
WP also has a bunch of helper functions, like
get_post_type_archive_link
that you can give the objects post type field to and get back its link like soget_post_type_archive_link(get_queried_object()->name);
The point is, you don't need to rely on some of the hackier answers above, and instead use the queried object to always get the correct url.
This will also work for multisite installs with no extra work, as by using wp's functions, you're always getting the correct url.
カスタムPHPコードを追加して、サイトのページがブラウザに読み込まれるたびに、そのページのURLが画面にエコーされるようにします.
echoget_permalink()
を使用できますが、すべてのページで機能するとは限りません.一部のページ(マイホームページなど)には複数の投稿が表示され、get_permalink()<を使用すると/code>これらのページでは、表示されたページのURLは返されません(ループ内の最後の投稿のURLが返されると思います).これらのページの場合、URLを返すにはどうすればよいですか?
ループが実行される前に起動する特定のフックに
get_permalink()
をアタッチできますか?または、どういうわけかループから抜け出したり、完了したらリセットしたりできますか?ありがとうございます.