Wordpress truyền biến giữa các trang

Khi bạn bắt đầu tiếp thị trang web của mình với thế giới thông qua SEO, Tiếp thị trong nước, Adwords hoặc Tiếp thị qua email đơn giản, bạn có thể gặp phải tình huống cần chuyển thông tin trở lại trang web của mình cho mục đích theo dõi.

Bạn có thể muốn thu thập URL hoặc ID quảng cáo trên Facebook của nút mà ai đó đã nhấp qua từ đó

Có thể bạn có các liên kết liên kết trên các trang web bên ngoài và cần theo dõi xem mọi người đang nhấp vào trang web của bạn từ đâu

Hoặc có thể bạn chỉ muốn một cách nhanh chóng để sửa đổi trang web của mình để thực hiện điều gì đó trên toàn trang web

Truyền dữ liệu đến trang web của bạn bằng tham số URL là một cách nhanh chóng để đạt được điều này mà không cần viết mã ở phần phụ trợ

Tham số URL còn được gọi là Chuỗi truy vấn hoặc Vars truy vấn và thông thường, có một cặp khóa và giá trị như thế này.
?state=NSW

Chúng luôn bắt đầu bằng dấu chấm hỏi ở cuối URL và nhiều cặp tham số có thể được nối với nhau bằng dấu và như thế này.
?state=NSW&city=Sydney

Thay đổi hành vi của trang web của bạn bằng các tham số URL

Chúng tôi có một khách hàng muốn nhúng một số trang trên trang web của họ vào một trang bên ngoài khác cho mục đích tiếp thị

Tuy nhiên, họ không muốn đầu trang hoặc chân trang hiển thị từ trang web của họ mà chỉ hiển thị phần thân của trang. Điều này có nghĩa là xóa tiêu đề có logo và điều hướng chính khỏi đầu trang cũng như các tiện ích chân trang và văn bản bản quyền ở cuối trang

Chúng tôi có thể dễ dàng thực hiện việc này bằng cách sử dụng CSS trên trang web của riêng mình nhưng không có cách nào để thêm CSS vào trang tiếp thị bên ngoài

Vì vậy, chúng tôi đã quyết định sử dụng một tham số URL mà khách hàng có thể thêm vào URL khi dán nó vào trang tiếp thị bên ngoài, cùng với một số mã đơn giản trong tiêu đề. php, chân trang. php và chức năng. tập tin php của chủ đề của họ

Chúng tôi đã thêm đoạn mã sau vào chức năng của chủ đề. tập tin php

[pastacode lang=”php” manual=”function%20wwp_custom_query_vars_filter(%24vars)%20%7B%0A%20%20%20%20%24vars%5B%5D%20. %3D%20'noheadfoot'%3B%0A%20%20%20%20return%20%24vars%3B%0A%7D%0Aadd_filter(%20'query_vars'%2C%20'wwp_custom_query_vars_filter'%20)%3B”

Nó thêm chuỗi “noheadfoot” dưới dạng một Biến truy vấn mới (giá trị tham số URL) mà WordPress có thể nhận ra

Bây giờ chúng ta có thể thêm ?noheadfoot=value vào địa chỉ URL của mình

Để xóa tiêu đề, menu và các div và phần khác khỏi tiêu đề, chúng tôi đã thêm đoạn mã sau vào tiêu đề. php và chân trang. tập tin chủ đề php

[pastacode lang=”php” manual=”%24noheadfoot%20%3D%20sanitize_text_field(%20get_query_var(%20'noheadfoot'%20)%20)%3B%0A%0A%24classhide%20%3D%20”%3B

Hàm get_query_var() tải giá trị, nếu có, từ truy vấn var mà chúng ta đã đăng ký trong mã trước đó và thêm vào địa chỉ URL bằng ?nofooter=true

Hàm sanitize_text_field() đảm bảo rằng chúng tôi nhận được một số giá trị văn bản – chúng tôi không muốn bất kỳ ai chuyển JavaScript hoặc mã khác trong tham số

Phần còn lại của mã đặt một biến có tên $classhide thành trống, sau đó nếu giá trị var của truy vấn là “TRUE” thì nó sẽ đặt biến thành ” hide”

Sau đó, chúng tôi có thể thêm biến này vào lớp của tất cả các khu vực chúng tôi muốn ẩn trong tiêu đề. php và chân trang. tập tin php chẳng hạn

[pastacode lang=”php” manual=”%3Cheader%20class%3D%22site-inner%3C%3Fphp%20echo%20%24classhide%3B%3F%3E%22%3E%0A%3Ch1%3ETitle%3C%2F

theo phong cách của chúng tôi. css hoặc trong tùy biến, chúng ta có thể thêm các thuộc tính CSS cho lớp ẩn

[pastacode lang=”css” manual=”. hide%7B%0A%20%20display%3Anone%3B%0A%7D” message=”” highlight=”” nhà cung cấp=”manual”/]

Vì vậy, khi một phần có "ẩn" được thêm vào lớp, phần đó không được hiển thị trong trình duyệt

Bạn có thể mở rộng mã này để ẩn hoặc hiển thị tất cả những thứ như thanh bên, widget, menu, v.v.

Hãy cho chúng tôi biết trong các nhận xét bên dưới nội dung bạn đang ẩn trên trang web của mình bằng phương pháp chuỗi truy vấn

Tôi đang cố gắng chuyển một giá trị từ danh sách thả xuống được chọn trên biểu mẫu html sang một trang khác sau khi nhấp vào nút gửi. Giá trị này không cần được lưu trữ trong cơ sở dữ liệu mà thay vào đó được sử dụng tạm thời để hiển thị lựa chọn dữ liệu sản phẩm của người dùng từ cơ sở dữ liệu trên trang tiếp theo. Đầu ra html của biểu mẫu hoạt động như mong đợi với giá trị xuất hiện trong giá trị tùy chọn, tôi không thể lấy nó để đăng giá trị đó và "tìm nạp" nó từ trang hai bằng POST. Nhưng nếu tôi thay đổi POST thành GET. Nó hoạt động như mong đợi. Tôi đã được thông báo rằng sử dụng POST được ưu tiên hơn, nhưng dường như tôi không thể làm cho nó hoạt động được?

Biểu mẫu hiển thị trên trang 1

';
echo '';
echo '
'; echo ''; echo '
'; echo '';

Đầu ra ở trang 2

YOU SELECTED:' . esc_html( $selectedProduct ) .'
';

Khi thực hiện var_dump($_POST);

Và lỗi php khi đăng bài.
lỗi khi đăng.

Lỗi cơ sở dữ liệu WordPress

Cột không xác định 'selectProduct' trong 'danh sách trường' cho truy vấn CẬP NHẬT myDBtable SET selectProduct= '39' WHERE id= 39

Tôi làm sai ở đâu?

Đang xem 7 trả lời - 1 đến 7 (trong tổng số 7)

  • Wordpress truyền biến giữa các trang
    Vui sướng

    (@vui vẻ)

    2 năm, 11 tháng trước

    Liên kết này hiển thị các chức năng ảnh hưởng đến các biến truy vấn. WordPress loại bỏ tất cả các biến mà nó không biết

    Người kiểm duyệt

    Wordpress truyền biến giữa các trang
    bcworkz

    (@bcworkz)

    2 năm, 11 tháng trước

    Thật vậy, query_vars không xác định bị tước, nhưng WP sẽ không xóa các giá trị trong $_POST

    Tôi đã kiểm tra các đoạn mã của bạn tốt nhất có thể vì tôi không có danh sách sản phẩm. Tôi đã mã hóa cứng các giá trị tùy ý khi cần. Trang thứ hai xuất ra BẠN ĐÃ CHỌN. 4444 như tôi mong đợi vì giá trị tùy chọn đã chọn của tôi là 4444. Var_Dump $_POST trên trang đích xuất ra các giá trị phần tử biểu mẫu như mong đợi

    Có chuyển hướng giữa biểu mẫu và trang 2 không? . Thông báo lỗi DB cho biết giá trị “39” đã được chuyển, vì vậy có gì đó đang hoạt động mặc dù var_dump() của bạn không hiển thị gì. Nếu bảng của bạn không chứa cột 'selectProduct', thì có vấn đề với cách xây dựng truy vấn SQL của bạn

    Trình bắt đầu chủ đề

    Wordpress truyền biến giữa các trang
    creativ3y3

    (@creativ3y3)

    2 năm, 11 tháng trước

    Tôi không biết về bất kỳ chuyển hướng nào đang xảy ra nhưng có thể cần phải xem xét điều đó để xem liệu có điều gì khác có thể khiến nó làm như vậy không. Nếu tôi xóa hành động trên biểu mẫu và đăng nó echo $selectedProduct trên cùng một trang thì nó hoạt động. Không thành công khi hành động được thêm vào biểu mẫu để chuyển đến trang thứ hai. Khi tôi đến trang đó, tôi nhận được. biến không xác định. đã chọnSản phẩm

    Trình bắt đầu chủ đề creativ3y3

    (@creativ3y3)

    2 năm, 11 tháng trước

    Tôi vừa nhận thấy ở trang thứ hai rằng nó xuất hiện trên một biểu mẫu có hành động đăng và chức năng if đăng, điều đó dường như đang xung đột. Nếu tôi xóa mã “if post” đó, nó có vẻ hoạt động

    Vì vậy, tôi đoán điều đó có nghĩa là không thể có một “nếu bài đăng” khác trên trang phụ?

    • Câu trả lời này đã được sửa đổi 2 năm, 11 tháng trước bởi
      Wordpress truyền biến giữa các trang
      creativ3y3 .

    Trình bắt đầu chủ đề creativ3y3

    (@creativ3y3)

    2 năm, 11 tháng trước

    Cảm ơn bạn đã dành thời gian @bcworkz, bạn đã giúp tôi đi đúng hướng để gỡ lỗi. Có vẻ như nó liên quan đến một đoạn mã khác xung đột với nó khiến biến không hoạt động bình thường. Hành động POST trên trang 1 chuyển đến trang 2 nằm trên trang cho phép người dùng cập nhật dữ liệu và gửi dữ liệu đó tới cơ sở dữ liệu. Vì vậy, để lấy id sản phẩm từ trang 1, tôi chuyển biến bằng cách sử dụng bài đăng và trên trang 2, hãy sử dụng.
    ______7
    Tôi sử dụng thông tin này để truy vấn dữ liệu theo id, tất cả đều hoạt động. Sau đó, nếu tôi bao gồm mã bên dưới để cho phép người dùng cập nhật dữ liệu (trên trang thứ hai) thì nó sẽ bị hỏng do dòng nhận xét bên dưới làm mới nó, nếu tôi nhận xét và gửi thì nó bị hỏng khi làm mới sau khi gửi do . Dưới đây là mã cập nhật.

    if ($_POST) {
    	$skipKeys = array(
                        'btnSubmit',
                        'id',
                        'Product',
                        'Series',
                        'selectProduct',
                     );
    
    foreach($_POST as $key =>$value){
            if(!in_array($key,$skipKeys)){
                $myDB->query(
                    $myDB->prepare(
                    "UPDATE my-table SET ".$key."= %s WHERE id= %d", $value, $selectedProduct
                    )
                );
            }    
    }
    //this line causes it not to work at all
    //header ("location: " . $_SERVER['REQUEST_URI']);
    }

    Bất kỳ ý tưởng làm thế nào để có được xung quanh này?

    • Câu trả lời này đã được sửa đổi 2 năm, 11 tháng trước bởi creativ3y3 .

    Wordpress truyền biến giữa các trang
    hướng dẫn tự động

    (@autotutorial)

    2 năm, 11 tháng trước

    Bạn phải sử dụng isset để kiểm tra ví dụ isset isset($_POST[‘key’]);

    $_POST['product'] = '';
    if( $_POST['product'] ) {
    //this false never true
    }
    if( isset($_POST['product'] ) ) {
    //true
    }

    , cũng trong foreach bạn có thể tạo một biến vùng chứa và sau đó sử dụng tiếng vang khi bạn có tất cả dữ liệu.
    Dữ liệu POST chỉ hiển thị trên trang đích, bạn không thể chuyển hướng.
    Sử dụng SESSION hoặc có thể là $stedProduct toàn cầu; .

    Trình bắt đầu chủ đề creativ3y3

    (@creativ3y3)

    2 năm, 11 tháng trước

    @autotutorial Cảm ơn lời khuyên của bạn, tôi sẽ xem xét tất cả những điều này. Tôi đã thử để một biến phiên hoạt động, nó hoạt động khi tôi không rời khỏi trang (không có hành động trên biểu mẫu) và đăng biểu mẫu, nhưng ngay khi tôi đặt một hành động trên biểu mẫu để đưa nó đến trang thứ hai thì nó không hoạt động . Ở trang 2, biến phiên có hiển thị, nhưng nó chưa được cập nhật từ bài đăng trên trang 1 (vì vậy nó hiển thị dữ liệu sai)

    Hai phương pháp truyền dữ liệu giữa các trang là gì?

    Truyền các biến giữa các trang bằng cách sử dụng phương thức GET hoặc POST của URL .

    Làm cách nào tôi có thể chuyển các giá trị từ trang này sang trang khác trong PHP?

    DOCTYPE html>"; echo ""; echo ""; echo " Psychiatric Disorders"; include ('menu. php'); $conn = mysqli_connect('localhost', 'root', ''); mysqli_select_db($conn, 'mydb'); session_start(); // Echo session variables that were set on previous page echo " " . $_SESSION["Name of disorders"] .