رفتن به مطلب

نحوه ارسال و دریافت متغیر $_GET در صفحات وردپرس


پست های پیشنهاد شده

سلام

فرض کنید یه برگه توی وردپرس داریم با این آدرس:

test.ir/yes

حالا میخواهیم چند تا متغیر بوسیله آدرس به این آدرس بفرستیم و اون رو توی صفحه دریافت کنیم:

test.ir/yes?x=1

یا

test.ir/yes/x/1

چطوری میشه همچین کاری کرد؟

لینک به ارسال

سلام

توی برگه های وردپرس نمیشه مستقیم از متغیر سراسری $_GET استفاده کرد و متغیری رو دریافت کرد.

ظاهرا برای اینکار باید این کد رو به فایل functions.php قالب اضافه کرد:


add_action('init','add_my_error');
function add_my_error() {
global $wp;
$wp->add_query_var('my_error');
}

حالا میشه متغیر my_error رو مقداری برای در نظر گرفت و اون رو در برگه ی دلخواه این چنین دریافت کرد:


<?php echo get_query_var('my_error'); ?>

میخوام بدونم آیا راهی است که به جای دریافت به این شکل:

test.ir/yes?my_error=404

اینطوری بشه آدرسها:

test.ir/yes/my_error/404

؟؟

لینک به ارسال

شما بفرمایید چه کاری میخواید بکنید تا بهتر بتونیم کمک کنیم

لینک به ارسال

سلام

توی برگه های وردپرس نمیشه مستقیم از متغیر سراسری $_GET استفاده کرد و متغیری رو دریافت کرد.

ظاهرا برای اینکار باید این کد رو به فایل functions.php قالب اضافه کرد:


add_action('init','add_my_error');
function add_my_error() {
global $wp;
$wp->add_query_var('my_error');
}

حالا میشه متغیر my_error رو مقداری برای در نظر گرفت و اون رو در برگه ی دلخواه این چنین دریافت کرد:


<?php echo get_query_var('my_error'); ?>

میخوام بدونم آیا راهی است که به جای دریافت به این شکل:

test.ir/yes?my_error=404

اینطوری بشه آدرسها:

test.ir/yes/my_error/404

؟؟

کی این حرف رو زده می شه متغییر ارسال کرد و این متد اسمش متد گت هست در حالت دیفالت وردپرس (پیوند یکتای دیفالت) نشانی یک مطلب برابر با


http://example.com/?p=1234

ارسال یک متغیر با متد گت به این صفحه یعنی


http://example.com/?p=1234&x=1

برای خوندنش هم باید نوشت


<?php
echo $_GET['x'];?>

برای جلوگیری از ارور هم باید این مقدار را داخل شرط ifset قرار داد

لینک به ارسال

شما بفرمایید چه کاری میخواید بکنید تا بهتر بتونیم کمک کنیم

میخوام مثلا همیچین آدرسی داشته باشم:

test.ir/yes/my_error/404

و بتونم اون متغیرها رو در قالب دریافت و استفاده کنم نمیخوام آدرس اینطوری باشه:

test.ir/yes?my_error=404

کی این حرف رو زده می شه متغییر ارسال کرد و این متد اسمش متد گت هست در حالت دیفالت وردپرس (پیوند یکتای دیفالت) نشانی یک مطلب برابر با


http://example.com/?p=1234

ارسال یک متغیر با متد گت به این صفحه یعنی


http://example.com/?p=1234&x=1

برای خوندنش هم باید نوشت


<?php
echo $_GET['x'];?>

برای جلوگیری از ارور هم باید این مقدار را داخل شرط ifset قرار داد

من هم گفتم که در شرایط عادی نمیشه و حرفم هم براساس تست خودم بود :)

لینک به ارسال

در این آدرس

test.ir/yes/my_error/404

متغیری وجود نداره

متغیر باید مقداری ثابت در یک سوی تساوی برای صدا کردن داشته باشه

وقتی می گوییم


test.com/?p=1234

یعنی پارامتر p برابر 1234 است و این معنی می دهد و الا 1234 به تنهایی چیزی نیست

لینک به ارسال

در این آدرس

test.ir/yes/my_error/404

متغیری وجود نداره

متغیر باید مقداری ثابت در یک سوی تساوی برای صدا کردن داشته باشه

وقتی می گوییم


test.com/?p=1234

یعنی پارامتر p برابر 1234 است و این معنی می دهد و الا 1234 به تنهایی چیزی نیست

در واقع راه حلی وجود ندارد که بتوان چنین کاری کرد؟

لینک به ارسال

راهش اینه که یا از طریق htaccess ری دایرزکت بشه مثل آدرس صفحات وردپرس یا یک پوشه با آدرس فوق درست بشه و صفحه index.php در اون پوشه ری دایرکت بشه

می شه هم بجای get با متد post متغیر را ارسال کرد ولی بجای لینک باید فرم ساخت

لینک به ارسال

سلامـ

از پروفایلـ‌ت (سطح برنامه نویسی متوسط ) حدس زدم که کد زیر رو متوجه میشی. من اینو تو یه تم استفاده کردم:



function wp_parsi_add_query_vars($public_query_vars)
{
$public_query_vars[] = 'abdy_custom_var';

return $public_query_vars;
}
add_action('query_vars', 'wp_parsi_add_query_vars');

/* *********************************************** */

function wp_parsi_rewrite_rules( $wp_rewrite ){

$new_rules = array( 'abdy/([^/]+)/?$' => 'index.php?abdy_custom_var='.$wp_rewrite->preg_index(1));

$wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}
add_action('generate_rewrite_rules', 'wp_parsi_rewrite_rules' , 10);

/* ********************************************** */

و ...:



global $wp_query;

$my_var = $wp_query->query_vars['abdy_custom_var'];

حالا یه همچین لینکی هم معتبره:

example.com/abdy/245

و مقدار my_var$ الان 245 ئه.

موفق باشیـ..

ویرایش شده توسط abdy
لینک به ارسال

سلامـ

از پروفایلـ‌ت (سطح برنامه نویسی متوسط ) حدس زدم که کد زیر رو متوجه میشی. من اینو تو یه تم استفاده کردم:



function wp_parsi_add_query_vars($public_query_vars)
{
$public_query_vars[] = 'abdy_custom_var';

return $public_query_vars;
}
add_action('query_vars', 'wp_parsi_add_query_vars');

/* *********************************************** */

function wp_parsi_rewrite_rules( $wp_rewrite ){

$new_rules = array( 'abdy/([^/]+)/?$' => 'index.php?abdy_custom_var='.$wp_rewrite->preg_index(1));

$wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}
add_action('generate_rewrite_rules', 'wp_parsi_rewrite_rules' , 10);

/* ********************************************** */

و ...:



global $wp_query;

$my_var = $wp_query->query_vars['abdy_custom_var'];

حالا یه همچین لینکی هم معتبره:

example.com/abdy/245

و مقدار my_var$ الان 245 ئه.

موفق باشیـ..

بسیار عالی بود، خیلی متشکرم.

با همین کد مشکل حل شد.

لینک به ارسال
  • 5 ماه بعد...

ببخشید آدرس صفحه ی من تو وردپرس مثلا این است :

mysite.ir/1391/01/03/?cat=5

چطوری میتونم تو فایل category.php به اعداد سال روز و ماه که داره دسترسی پیدا کنم یعنی اسم Get شو چی هست ؟

لینک به ارسال

$url = $_SERVER['REQUEST_URI'];
$segments = explode('/', $url);

میریزه توی متغییر segments

لینک به ارسال

لیست کل متغییرها


global $wp_query;
var_dump($wp_query->query_vars);

نمونه


$wp_query->query_vars['key']

لینک به ارسال

خیلی ممنون دوستان اما یه مشکلی که من دارم اینه که من سمت راست سایتم 2 تا بلوک دارم که اخرین مطالب از دو تا دسته رو نشون میدند

وقتی تو این لینک میرم

mysite.ir/1391/01/03/?cat=5

اون 2 تا بلوک هم به همین تاریخ آخرین مطالب رو نشون میدن.....یعنی آخرین مطالب واقعی دیگه نیستش.

چیکار باید کرد دوستان.

لینک به ارسال

تو یکی از فروم های انگلیسی نوشته بود از wp_reset_postdata(); استفاده کنید

حالا من نمی دونم تو کدوم فایل قرار بدم

hrader.php

یا category.php

یا footer.php

و اصلا دقیقا کجا قرار بدم...

میشه یه کمکی کنید

لینک به ارسال

این کد بعد از حلقه قرار میگیرد

با توجه به آدرس اجرا شده فایل متفاوت هست

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...