현재 페이지 URL 가져 오기 (페이지 매김 포함)


13

현재 페이지의 올바른 URL을 자동으로 가져 오는 WP 기능이 있습니까? 방금 단일 게시물을 열면이 함수는과 동일한 값을 반환 get_permalink()하지만 페이지의 페이지가 매겨진 인스턴스에 있으면 (댓글을 통해 페이지를 매길 때) 함수는 동일한 방식으로 반환합니다 get_pagenum_link(get_query_var('paged')).

코덱을 검색했지만 원하는 것을 찾지 못했습니다. (그러나 get_pagenum_link()거기에는 문서화되어 있지 않습니다.)

이 기능 에 대해 이미 알고 있지만 작업을 수행하는 "기본"WP 기능이 있으면 기쁠 것입니다.

미리 감사드립니다! 감사합니다, 르네

답변:


27

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()컨텍스트가 변경 될 때를. 예를 들어, 사용하는 esc_url_raw()DB 사용 또는 위해 esc_attr()또는 esc_url()HTML에 대한.

최신 정보

절대 URI (구성표 및 호스트 포함)를 작성해야하는 표시된 예제 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 );

워드 프레스 코어는 다중 사이트 사이트 URL에서 포트, 사용자 또는 비밀번호를 지원하지 않으므로 이것으로 충분합니다.


OP를 실망시키는 것은이 답변을 해결책으로 선택하지 않았습니다. 감사합니다.
cfx

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

기능은 아니지만 워드 프레스 코드를 확실히 사용합니다.

http://kovshenin.com/2012/current-url-in-wordpress/


2
그것은 부분적으로 작동하지만 원하는대로 작동하지 않습니다. 같은 매개 변수 year는 이전에 없었지만 쿼리 문자열에 추가되고 다른 매개 변수 (예 : replytocom매개 변수)는 손실됩니다. 이에 대한 해결책을 알고 있습니까?
René Schubert

0

1) $_SERVER['REQUEST_URI']-스크립트를 실행하는 페이지에 액세스하기 위해 URL을 반환합니다. http://www.example.com/product.php?id=5페이지에 액세스 하기 위해 입력해야하는 경우 를 $_SERVER['REQUEST_URI']반환합니다 /product.php?id=5.

2) $_SERVER['DOCUMENT_ROOT']– 서버의 구성 파일에 지정된 서버의 루트 디렉토리를 리턴합니다. 이 변수는 일반적으로 /usr/yoursite/wwwLinux 및 D:/xamps/xampp/htdocsWindows 와 같은 경로를 반환합니다 .

3) $_SERVER['HTTP_HOST']– http 헤더에있는 호스트 이름을 반환합니다. 이 변수는 일반적으로 브라우저의 주소 표시 줄에서 example.com찾을 때 와 같은 경로를 반환하고 http://example.com주소 표시 줄 에서 www.example.com볼 때 반환 http://www.example.com합니다. 이것은 저장된 세션 http://example.com이와 같지 않기 때문에 PHP를 사용하여 온라인 결제를하는 동안 세션을 유지해야 할 때 매우 유용 합니다 http://www.example.com.

4) $_SERVER['HTTP_USER_AGENT']-웹 페이지에 액세스하는 사용자 에이전트 (브라우저) 세부 정보를 반환합니다. 우리가 사용할 수있는 strpos($_SERVER["HTTP_USER_AGENT"],”MSIE”)마이크로 소프트 인터넷 익스플로러를 감지하거나 사용할 수있는 strpos($_SERVER["HTTP_USER_AGENT"],”Firefox”)PHP에서 파이어 폭스 브라우저를 감지 할 수 있습니다.

5) $_SERVER['PHP_SELF']-현재 실행중인 스크립트의 파일 이름을 반환합니다. URL에 액세스하고 스크립트 http://www.example.com/product.php?id=5$_SERVER['PHP_SELF']반환 한다고 가정 해 봅시다 /product.php.

6) $_SERVER['QUERY_STRING']– 쿼리 문자열을 사용하여 현재 실행중인 스크립트에 액세스하는 경우 쿼리 문자열을 반환합니다. 쿼리 문자열은“?”다음에 사용 가능한 문자열입니다. sign $_SERVER['QUERY_STRING']. 다음 URL 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']-현재 실행중인 파일의 절대 경로를 반환합니다. var/example.com/www/product.phpLinux와 같은 경로와 D:/xampp/xampp/htdocs/test/example.phpWindows 와 같은 경로를 반환합니다 .


1
CLI에서 이들 중 어느 것도 사용할 수 없으므로 cron 작업에는 쓸모가 없습니다.
카이저

0

wp_guess_url 은 당신이 찾고있는 것입니다.

사이트의 URL을 맞춰보세요.

wp-admin 링크를 제거하여 wp-admin 디렉토리에없는 리턴 URL 만 검색합니다.


이것은 사용하려고 시도했을 때 현재 페이지와 완전히 다른 URL을 반환합니다.
커비

0

add_query_args( null, null ) $qs[""] = null결과에 영향을 미치지 않지만 빈 키 ( ) 로 배열 요소를 만듭니다 .


add_query_arg () 에 따르면 | 기능 | WordPress Developer Resources , 두 번째, 세 번째 매개 변수는 선택 사항이며 생략 할 수 있습니다.

add_query_args( null, null )더 짧을 수 있습니다 .

$current_url = add_query_args( [] );

또한이 짧은 버전의 첫 번째 매개 변수는 필수 매개 변수이기 때문에 권장되는 방법은 아니지만이.

$current_url = add_query_args();

또한, 참고 둘 home_url( add_query_vars( [] ) )home_url( add_query_arg( null, null ) ) 실제 URL을 반환하지 않을 수 있습니다 워드 프레스는 하위 디렉토리에 설치됩니다.

예를 들어 https://example.com/wp/wp/fooWordPress가에 설치된 경우 반환 될 수 있습니다 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([]);

0

나를 위해 <?php esc_url(the_permalink()); ?>(페이지 매김이있는 아카이브 페이지에서) 작동합니다.


불가능한. the_permalink()이스케이프 된 퍼머 링크를 반향하고 아무것도 반환하지 않습니다. 는 esc_url()아무것도 얻지 못하며 이스케이프 된 URL이됩니다.
fuxia

당신이 옳습니다, 그것은 내가 생각하는 permalink 캐싱 때문에 만 작동했습니다.
Henning Fischer

-1

나는 지금 페이지 매김을하지 않지만이 함수를 사용하여 루프 내에서 URL을 얻을 수 있습니다

<?php $ID = get_the_ID(); 
echo get_permalink( $ID ); ?>

또는 PHP를 사용하지 않으려는 경우 여기에서 jquery 메소드를 선택할 수도 있습니다 (루프 외부에서 작동하도록 도와줍니다)

$(document).ready(function () {
var vhref = $(location).attr('href');
var vTitle = $(this).attr('title');
$('#spnTitle').html('' + vTitle + '');
$('#spnURL').html('' + vhref + '');
});​

또는 PHP 기능을 선호하는 경우 루프 외부에서 ID를 가져와야합니다.


1
죄송하지만, 이것은 내가 요구 한 the_permalink()것이 아닙니다 ... + 루프 내부에서 호출 될 때 ID가 필요하지 않습니다.
René Schubert

2
이 답변은 원래 질문과 거의 관련이 없습니다. 정확하게 대답하지 않았거나 주제에 관한 귀중한 정보를 제공하지 않았습니다.
jounileander

-2

워드 프레스 기능을 사용하여 현재 페이지 URL을 얻을 수 있습니다

the_permalink()

현재 페이지 URL 링크가 표시됩니다.


4
거의; the_permalink()인쇄 현재 게시물의 URL을. 그러나 다른 요청에는 작동하지 않으며 페이지 매김과 같은 변수는 포함되지 않습니다. 따라서 @ René Schubert가 찾고있는 답변은 실제로 없습니다.
TheDeadMedic
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.