source

WordPress를 사용하여 URL에서 추가 변수를 전달하는 방법

gigabyte 2022. 9. 25. 21:14
반응형

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 varsquery_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

반응형