2012-11-30 39 views
8

Tôi cố gắng để vượt qua một tham số để một trang web WordPress sử dụng một URL - ví dụ:Trích xuất một tham số từ một URL trong WordPress

www.fioriapts.com/?ppc=1 sẽ là URL.

Tôi dự định viết một hàm trong tệp functions.php nhưng cơ chế về cách trích xuất tham số trong WordPress nằm ngoài tôi. Tôi đang tìm nhiều ví dụ về cách thêm thông số vào URL bằng cách sử dụng hàm add_query_arg() nhưng không tìm thấy gì về cách trích xuất tham số. Cảm ơn trước sự giúp đỡ nào.

Trả lời

19

Khi chuyển các tham số thông qua URL, bạn có thể truy xuất các giá trị dưới dạng tham số GET.

Sử dụng này:

$variable = $_GET['param_name']; 

//Or as you have it 
$ppc = $_GET['ppc']; 

Nó là an toàn hơn để kiểm tra sự biến đầu tiên mặc dù:

if (isset($_GET['ppc'])) { 
    $ppc = $_GET['ppc']; 
} else { 
    //Handle the case where there is no parameter 
} 

Dưới đây là một chút đọc trên GET/POST params bạn nên xem xét: http://php.net/manual/en/reserved.variables.get.php

+0

Rất cảm ơn - đây là thời điểm dành cho tôi - vì vậy nó được thực hiện chính xác như được thực hiện trong tiêu chuẩn html/php - Wordpress có rất nhiều chức năng tùy chỉnh mà tôi cho là khác ... – Redxar

+1

Cảm ơn - Tôi quen thuộc với POST - nhưng vấn đề trong trường hợp này là nó không đến từ một bài đăng - những gì họ muốn làm là đặt liên kết url trên các trang web khác bằng thông số ppc để xác định trang web mà liên kết đang bật - và có nội dung khác nhau tùy thuộc vào giá trị của tham số ppc trong url - $ _GET dường như không hoạt động - vì nó không đến từ bài đăng mà tôi đang nghĩ. Có cách nào khác để lấy tham số ra khỏi URL không? – Redxar

+0

Hoặc là những gì họ đang yêu cầu không thể? – Redxar

0

Bạn có thể thử chức năng này

/** 
* Gets the request parameter. 
* 
* @param  string $key  The query parameter 
* @param  string $default The default value to return if not found 
* 
* @return  string The request parameter. 
*/ 

function get_request_parameter($key, $default = '') { 
    // If not request set 
    if (! isset($_REQUEST[ $key ]) || empty($_REQUEST[ $key ])) { 
     return $default; 
    } 

    // Set so process it 
    return strip_tags((string) wp_unslash($_REQUEST[ $key ])); 
} 

Đây là những gì đang xảy ra trong hàm

Đây là ba điều đang diễn ra.

  • Trước tiên, chúng tôi kiểm tra xem khóa yêu cầu có hiện diện hay không. Nếu không, thì chỉ cần trả về một giá trị mặc định.
  • Nếu được đặt, thì trước tiên chúng tôi xóa các dấu gạch chéo bằng cách thực hiện wp_unslash. Đọc ở đây tại sao nó tốt hơn stripslashes_deep.
  • Sau đó, chúng tôi khử trùng giá trị bằng cách thực hiện một strip_tags đơn giản. Nếu bạn mong đợi văn bản đa dạng từ tham số, hãy chạy nó thông qua các hàm wp_kses hoặc các hàm tương tự.

Tất cả các thông tin này cộng với thông tin thêm về những suy nghĩ đằng sau những chức năng có thể được tìm thấy vào liên kết này https://www.intechgrity.com/correct-way-get-url-parameter-values-wordpress/

0

Tại sao không chỉ cần sử dụng WordPress get_query_var() chức năng? Link to Codex

// Test if the query exists at the URL 
if (get_query_var('ppc')) { 

    // If so echo the value 
    echo get_query_var('ppc'); 

} 

Bạn cũng sẽ cần phải đăng ký biến truy vấn này trong plugin hoặc functions.php của bạn.

add_action('init','add_get_val'); 
function add_get_val() { 
    global $wp; 
    $wp->add_query_var('ppc'); 
} 
Các vấn đề liên quan