-
December 31st, 2018, 19:27
#1
تغییر پیوندهای یکتا پیش فرض سایت وردپرس در فانکشن
سلام دوستان
ببنید میخواستم وقتی برای یک برگه، parent مشخص میکنم. ادرس parent توی یو ار ال نیاد.
بذارید مثال بزنم: مثلا برگهC زیر مجموعه برگه A هست. حالا آدرس url برگه C به این صورت میشه. www.example.com/A/C
و من نمیخوام این اتفاق بیفته میخوام ادرس یو ار ال برگه C به این صورت باشه -------> www.example.com/C
ولی برادکرامپ C به این صورت نمایش داده بشه : Home > A > C
حالا باید توی فانکشن چه کدی بنویسم که یوارال برگه هایی مثل برگه c به این صورت باشه: www.example.com/C
نمیدونم دیگه باید چه طور توضیح بدم.
-
-
December 31st, 2018 19:27
# ADS
-
December 31st, 2018, 19:56
#2
عضو جدید
پاسخ : تغییر پیوندهای یکتا پیش فرض سایت وردپرس در فانکشن
درود بر شما
میتونید از این افزونه استفاده کنید.
موفق و پیروز باشید
مفتخر به کسب 100% رضایتمندی مشتریان در سال 1397
500% افزایش سرعت وردپرس با
هاست وردپرس
-
-
December 31st, 2018, 19:57
#3
پاسخ : تغییر پیوندهای یکتا پیش فرض سایت وردپرس در فانکشن
نه اصلا نمیخوام از افزونه استفاده کنم و ادرس ریدایرکت بشه
-
-
December 31st, 2018, 20:19
#4
عضو جدید
پاسخ : تغییر پیوندهای یکتا پیش فرض سایت وردپرس در فانکشن
میتونید از این تکه کد استفاده کنید
موفق باشید
مفتخر به کسب 100% رضایتمندی مشتریان در سال 1397
500% افزایش سرعت وردپرس با
هاست وردپرس
-
تعداد تشکر ها از SIBHost به دلیل پست مفید
-
December 31st, 2018, 21:15
#5
پاسخ : تغییر پیوندهای یکتا پیش فرض سایت وردپرس در فانکشن
نمیدونم چرا این کد رو میذارم عمل نمیکنه فقط میخوام روی برگه ها عمل کنه نه پست تایپ ها
کد PHP:
function wpse_101072_flatten_hierarchies( $page_link, $post ) { if ( $post->post_type != 'page') return $page_link;
$uri = ''; foreach ( $post->ancestors as $parent ) { $uri = get_post( $parent )->post_name . "/" . $uri; }
return str_replace( $uri, '', $page_link );}add_filter( 'page_link', 'wpse_101072_flatten_hierarchies', 10, 2 );
-
-
January 1st, 2019, 14:24
#6
عضو دائم
پاسخ : تغییر پیوندهای یکتا پیش فرض سایت وردپرس در فانکشن

نوشته اصلی توسط
elan
نمیدونم چرا این کد رو میذارم عمل نمیکنه فقط میخوام روی برگه ها عمل کنه نه پست تایپ ها
کد PHP:
function wpse_101072_flatten_hierarchies( $page_link, $post ) { if ( $post->post_type != 'page') return $page_link;
$uri = ''; foreach ( $post->ancestors as $parent ) { $uri = get_post( $parent )->post_name . "/" . $uri; }
return str_replace( $uri, '', $page_link );}add_filter( 'page_link', 'wpse_101072_flatten_hierarchies', 10, 2 );
باسلام، برگه ها یک پست تایپ هستند. کد های بالا تنها آدرس ها را برای نمایش عوض می کنند (***** های page_link، post_type_link و ..). اگر با این ***** ها آدرس ها به صورت example.com/C در سایت نمایش دهید کار شما تمام نخواهد شد، در صورتی که وارد این آدرس ها شوید وردپرس 404 خواهد داد به دلیل آنکه داخل پست ها دنبال پستی با اسم C می گردد (با توجه به ساختار آدرس هاتون ممکن است نتیجه متفاوت باشد)، شما باید یک rewrite rule هم اضافه کنید که به برگه ها هدایت شود و دنبال C بگردد :
کد:
function myinit() {
global $wp,$wp_rewrite;
$wp_rewrite->add_rule('(.*)','index.php?post_type=page&name=$matches[1]', 'top');
}
add_action('init','myinit');
پس از قرار دادن کد بالا باید rule ها یک بار flush شود. در کل پیشنهاد نمی کنم دستی این کار را انجام دهید مگر بدهید یک برنامه نویس انجام دهد و در آخر بهتر است با افزونه های موجود کار کنید.
-
تعداد تشکر ها ازT.Toosi به دلیل پست مفید