WordPress를 사용하여 URL에서 추가 변수를 전달하는 방법
url의 추가 변수를 WordPress 설치로 전달하는데 문제가 있습니다.
를 들어, 「」입니다./news?c=123
인지 웹사이트 합니다.www.example.com?c=123
, 에 그 의 정보가 되어 있는 하지 않습니다.www.example.com/news?c=123
디렉토리에 php 파일을 지정합니다.
if (isset($_GET['c']))
{
setcookie("cCookie", $_GET['c']);
}
if (isset($_SERVER['HTTP_REFERER']))
{
setcookie("rCookie", $_SERVER['HTTP_REFERER']);
}
아이디어 있어요?
트립 「 웨이 엔드(「워드 프레스 웨이」의하지 않는다wp-admin
), , 3가지 기능을 WordPress는 WordPress는 WordPress를 사용합니다.
- add_query_arg() - 새로운 쿼리 변수(예에서는 c)를 사용하여 URL을 만듭니다.
- query_vars 필터 - WordPress가 알고 있는 공개 쿼리 변수 목록을 변경합니다(WP 쿼리는 백엔드에서 사용되지 않기 때문에 프런트엔드에서만 작동합니다).
wp-admin
- 따라서 이 또한 다음에서 사용할 수 없습니다.admin-ajax
) - get_query_var() - URL로 전달된 커스텀쿼리 변수의 값을 가져옵니다.
수퍼글로벌)을 $_GET
★★★★★★★★★★★★★★★★」
예
링크를 작성하거나 쿼리 변수를 설정해야 하는 페이지에서 다음을 수행합니다.
이 페이지로 돌아가는 링크인 경우 쿼리 변수 추가만 하면 됩니다.
<a href="<?php echo esc_url( add_query_arg( 'c', $my_value_for_c ) )?>">
다른 페이지로의 링크일 경우
<a href="<?php echo esc_url( add_query_arg( 'c', $my_value_for_c, site_url( '/some_other_page/' ) ) )?>">
functions.php 또는 일부 플러그인 파일 또는 커스텀클래스(프런트 엔드만):
function add_custom_query_var( $vars ){
$vars[] = "c";
return $vars;
}
add_filter( 'query_vars', 'add_custom_query_var' );
URL에 설정된 쿼리 변수를 검색하여 작업하려는 페이지/함수에서 다음을 수행합니다.
$my_c = get_query_var( 'c' );
wp-admin
)
에서는 절대 wp()
WP를 사용하다 그, 습, 습이 없습니다.query vars
및query_vars
후크는 실행되지 않습니다.
때는 더 한 번 $_GET
은 다음과 같습니다이를 위한 최선의 방법은 다음과 같습니다.
$my_c = filter_input( INPUT_GET, "c", FILTER_SANITIZE_STRING );
만일의 경우에 당신은 진실된 시도를 할 수 있다.
$my_c = isset( $_GET['c'] ? $_GET['c'] : "";
또는 그 변형입니다.
이 문제를 해결할 수 있는 해결책은 거의 없다.먼저 다음과 같은 경우 플러그인을 선택할 수 있습니다.
또는 수동으로 코드를 작성하려면 다음 게시물을 확인하십시오.
다음 항목도 확인하십시오.
자주 방문하는 게시물이기 때문에 혹시나 도움이 될 것 같아서 제 해결책을 올려야겠다고 생각했습니다.WordPress에서는 쿼리 변수와 함께 다음과 같이 permalink를 변경할 수 있습니다.
www.example.com?c=123 to www.example.com/c/123
이를 위해서는 함수에 이러한 코드 행을 추가해야 합니다.php 또는 플러그인 기반 파일.
샹칸의 앤워에서
add_filter( 'query_vars', 'addnew_query_vars', 10, 1 );
function addnew_query_vars($vars)
{
$vars[] = 'c'; // c is the name of variable you want to add
return $vars;
}
게다가 커스텀 리라이트 룰을 추가하기 위해서, 이 스니핑이 행해집니다.
function custom_rewrite_basic()
{
add_rewrite_rule('^c/([0-9]+)/?', '?c=$1', 'top');
}
add_action('init', 'custom_rewrite_basic');
특정 페이지의 개서 규칙을 추가해야 하는 경우 해당 페이지의 슬래그를 사용하여 해당 페이지의 개서 규칙을 작성할 수 있습니다.OP가 물어본 질문처럼
www.example.com/news?c=123 to www.example.com/news/123
이전 기능에 약간의 수정을 가함으로써 원하는 동작으로 변경할 수 있습니다.
function custom_rewrite_basic()
{
add_rewrite_rule('^news/([0-9]+)/?', 'news?c=$1', 'top');
}
add_action('init', 'custom_rewrite_basic');
누군가에게 유용하게 쓰였으면 하는 바람.
다음 코드를 추가합니다.php
add_filter( 'query_vars', 'addnew_query_vars', 10, 1 );
function addnew_query_vars($vars)
{
$vars[] = 'var1'; // var1 is the name of variable you want to add
return $vars;
}
$_GET['var1']를 사용할 수 있습니다.
<?php
$edit_post = add_query_arg('c', '123', 'news' );
?>
<a href="<?php echo $edit_post; ?>">Go to New page</a>
"news" 대신 아무 페이지나 추가할 수 있습니다.
한 가지 문제가 발생할 수 있습니다.is_home()
홈 URL에 등록된 query_var가 있는 경우 true를 반환합니다.예를 들어 다음과 같습니다.http://example.com
는 블로그 대신 정적 페이지를 표시합니다.http://example.com/?c=123
는 블로그를 반환합니다.
상세한 것에 대하여는, https://core.trac.wordpress.org/ticket/25143 및 https://wordpress.org/support/topic/adding-query-var-makes-front-page-missing/ 를 참조해 주세요.
(쿼리에 영향을 주지 않는 경우) 할 수 있는 것은add_rewrite_endpoint()
이 명령어는 다음 명령어 실행 중에 실행되어야 합니다.init
동작은 개서 규칙에 영향을 미칩니다.예.
add_action( 'init', 'add_custom_setcookie_rewrite_endpoints' );
function add_custom_setcookie_rewrite_endpoints() {
//add ?c=123 endpoint with
//EP_ALL so endpoint is present across all places
//no effect on the query vars
add_rewrite_endpoint( 'c', EP_ALL, $query_vars = false );
}
이렇게 하면$_GET['c']
URL에 다음과 같은 추가 정보가 포함되어 있는 경우www.example.com/news?c=123
.
이 추가/변경 후에는 반드시 다시 쓰기 규칙을 삭제하십시오.
post url에 파라미터를 추가하려면(영구적으로) 다음을 사용합니다.
add_filter( 'post_type_link', 'append_query_string', 10, 2 );
function append_query_string( $url, $post )
{
return add_query_arg('my_pid',$post->ID, $url);
}
출력:
http://yoursite.com/pagename?my_pid=12345678
이게 내가 이걸 작동시킬 수 있는 유일한 방법이었어
add_action('init','add_query_args');
function add_query_args()
{
add_query_arg( 'var1', 'val1' );
}
http://codex.wordpress.org/Function_Reference/add_query_arg
이 경우 url을 / 뒤에 추가하고 쿼리 인수를 넣기만 하면 됩니다.맘에 들다
www.example.com/news/?c=123
또는news/?c=123
대신
www.example.com/news?c=123
또는news?c=123
언급URL : https://stackoverflow.com/questions/4586835/how-to-pass-extra-variables-in-url-with-wordpress
'source' 카테고리의 다른 글
JavaScript %(modulo)는 음수에 대해 음의 결과를 제공합니다. (0) | 2022.09.25 |
---|---|
MySQL 쿼리에서 타임스탬프를 현재 날짜로 변환 (0) | 2022.09.25 |
PHP에서 폐쇄란 무엇이며 왜 "사용" 식별자를 사용하는가? (0) | 2022.09.25 |
Gradle - 기본 매니페스트 속성 없음 (1) | 2022.09.25 |
MySQL에서 중첩된 트랜잭션이 허용됩니까? (0) | 2022.09.25 |