MaySam.M

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

18 پست در این موضوع قرار دارد

سلام

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

test.ir/yes

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

test.ir/yes?x=1

یا

test.ir/yes/x/1

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

0

به اشتراک گذاری این پست


لینک به پست

اینطور:

$_GET['x']

2

به اشتراک گذاری این پست


لینک به پست

سلام

توی برگه های وردپرس نمیشه مستقیم از متغیر سراسری $_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

؟؟

0

به اشتراک گذاری این پست


لینک به پست

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

2

به اشتراک گذاری این پست


لینک به پست

سلام

توی برگه های وردپرس نمیشه مستقیم از متغیر سراسری $_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 قرار داد

2

به اشتراک گذاری این پست


لینک به پست

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

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

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 قرار داد

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

0

به اشتراک گذاری این پست


لینک به پست

در این آدرس

test.ir/yes/my_error/404

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

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

وقتی می گوییم


test.com/?p=1234

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

2

به اشتراک گذاری این پست


لینک به پست

در این آدرس

test.ir/yes/my_error/404

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

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

وقتی می گوییم


test.com/?p=1234

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

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

0

به اشتراک گذاری این پست


لینک به پست

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

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

2

به اشتراک گذاری این پست


لینک به پست

سلامـ

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



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
2

به اشتراک گذاری این پست


لینک به پست

سلامـ

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



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 ئه.

موفق باشیـ..

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

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

0

به اشتراک گذاری این پست


لینک به پست

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

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

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

0

به اشتراک گذاری این پست


لینک به پست

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

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

3

به اشتراک گذاری این پست


لینک به پست

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


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

نمونه


$wp_query->query_vars['key']

3

به اشتراک گذاری این پست


لینک به پست

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

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

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

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

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

0

به اشتراک گذاری این پست


لینک به پست

از wp_reset_query و wp_query استفاده کنید

http://wp-parsi.com/generator/

2

به اشتراک گذاری این پست


لینک به پست

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

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

hrader.php

یا category.php

یا footer.php

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

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

0

به اشتراک گذاری این پست


لینک به پست

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

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

0

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری

  • مطالب مشابه

    • توسط pouyamahmoudi
      با عرض سلام ، وقت بخیر و خسته نباشید
      قالب وردپرس من با وجود واکنش گرا بودن در نسخه موبایل یک مشکل داره 
      مشکل اینه که به صورت یه صفحه خالی با رنگ پس زمینه سایت میاد و باید صفحه رو بکشم به سمت راست تا محتویات نمایش داده بشه 
      لطفا جهت حل این مشکل راهنمایی کنید
      با سپاس

    • توسط arianemun
      سلام عرض ادب به کاربران وردپرس پارسی ، من یک مشکلی دارم در افزونه ای ، افزونه woocomerce product finder یک افزونه ای است طبق تنظیمات و چیز هایی که برای محصول ووکامرسی تعریف میکنیم با انتخواب گزینه ها توسط کاربر محصول مورد نظر خودش رو پیدا میکنه، تنها مشکلی که این افزونه یا میشه گفت ضعفی که داره تفاوت محصول برجسته رو با محصول ساده متوجه نمیشه یعنی اگر تو اون دسته یک محصول برجسته باشه و یک محصول ساده اون ها رو از هم تفکیک نمیکنه من میخواستم این قابلیت رو به این افزونه اضافه کنم که کاربر وقتی محصولش رو پیدا کرد هم محصول ساده ها رو ببینه و محصول برجسته شده ! ممنون میشم کمک کنید .
       
      لینک افزونه استفاده شده
    • توسط reza_yki
      سلام من ابزارکی نوشتم که کاربر بتونه به وسیله select option به صورتی multi بتونه چندین دسته رو انتخاب کنه همه چیز درست و بدون مشکل کار میکنه فقط یه مشکل هست اونم اینه که وقتی ابزارک رو برای اولین بار فعال میکنی خطای زیر رو میده وباید یه دونه دسته رو انتخاب و ذخیره کنی تا ابزارک به صورت صحیح کارکنه لطفا راهنماییم کنید.
      Warning: in_array() expects parameter 2 to be array, string given in E:\Program Files\xampp\htdocs\wordpress\wp-content\themes\mymag\functions\widgets\widgets.php on line 29  
      اینم سورس کد:
      <?php public function form( $instance ) { $title = ! empty( $instance['title'] ) ? $instance['title'] : esc_html__( 'عنوان ابزارک', 'text_domain' ); $args = array( 'hide_empty' => 0, 'type' => 'post', 'taxonomy' => 'category', 'orderby' => 'name', 'hierarchical' => true, ); $cats = get_categories( $args ); $instance['cat_id'] = isset( $instance['cat_id'] ) ? ( $instance['cat_id'] ) : '1'; $count_cat = isset ($instance['cat_id']) ? count($instance['cat_id']) : '1' ; $tab_number = isset( $count_cat ) ? absint( $count_cat ) : 1; ?> <p> <label for="<?php echo $this->get_field_name( 'title' ); ?>"><?php _e( 'Title:' ); ?></label><br> <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" /> </p> <p> <label for="<?php echo $this->get_field_id('tab_number'); ?>"><?php _e( 'تعداد زبانه:'); ?></label><br> <input id="<?php echo $this->get_field_id('tab_number'); ?>" name="<?php echo $this->get_field_name('tab_number'); ?>" type="number" min="0" class="my_widget_number" value="<?php echo $tab_number; ?>" size="3" /> </p> <label for="<?php echo $this->get_field_name( 'cat_id' ); ?>"><?php _e( 'انتخاب دسته بندی : ' ); ?></label> <select id="<?php echo $this->get_field_id( 'cat_id' ); ?>" name="<?php echo $this->get_field_name( 'cat_id[]' ); ?>" multiple="multiple" style="width: 100%; margin: 10px auto; height: auto;"> <?php foreach( $cats as $cat ): ?> <option value="<?php echo esc_attr(__($cat->term_id)); ?>"<?php selected(in_array($cat->term_id, $instance['cat_id'])); // selected($cat->term_id,$cats_id) ?>><?php echo esc_attr(__($cat->name)); ?></option> <?php endforeach; ?> </select> <p> <input type="text" value="<?php echo esc_attr(__(implode(',', $instance['cat_id']))); ?>"> </p> <?php }  
    • توسط سعید فرزادی پور
      با عرض سلام
      من به مشکلی خوردم که راه حل اون رو نمیدونم
      در هدر سایت یک نویگیشن بار دارم که منوی اصلی سایتم به صورت دراپ داون در این نویگیشن بار وجود داره ، قال سایت من shaply هستش و استفاده از ویجت ها در body بازه ، من با استفاده از یک ویجت اسلایدر در بالاترین قسمت و زیر هدر سایت که ارتفاع اونم 55 پیکسل هستش اسلایدر بزرگ ایجاد کردم ، و حالا زمانی که میرم روی دراپ داون ها متاسفانه تا قبل از اسکرول کردن به پایین ، زیر منو ها به زیر اسلایدر میرن ، اما بعد از اسکرول کردن به پایین این مشکل حل شده و منو ها و زیر منو ها نمایش داده میشن ، هرچه z-index رو افزایش دادم نتیجه ای نداشت ، چطور میتونم این مشکل رو حل کنم ؟
      و سوال دوم این که در این تم منو ها اول به پایین و بعد به راست باز میشن و من میخوایم سایت رو به صورت فارسی داشته باشم و میخوام اول به پایین و بعد به چپ باز بشن منو ها , چه تغییری میتونم در css ایجاد کنم ؟
    • توسط hamid_diablo
      سلام دوستان
      من وردپرس رو روی لوکال هاست نصب کرده بودم
       
      تا چند روز پیش مشکلی نداشتم تا اینکه یه پوسته جدید نصب کردم و بعد از اون متاسفانه وردپرس بالا نیامد (صفحه سفید ظاهر شد )
       
      فقط قالب صحیفه رو نمایش میده بدون پیشخوان!!!
       
      وردپرس و پاک کردم و دوباره روی لوکال هسات نصب کردم اما مشکل برطرف نشد !
      ممنون میشم راهنماییم کنید