تغییر پیوندهای یکتا پیش فرض سایت وردپرس در فانکشن
سلام دوستان
ببنید میخواستم وقتی برای یک برگه، 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
نمیدونم دیگه باید چه طور توضیح بدم.
پاسخ : تغییر پیوندهای یکتا پیش فرض سایت وردپرس در فانکشن
درود بر شما
میتونید از این افزونه استفاده کنید.
موفق و پیروز باشید
پاسخ : تغییر پیوندهای یکتا پیش فرض سایت وردپرس در فانکشن
نه اصلا نمیخوام از افزونه استفاده کنم و ادرس ریدایرکت بشه
پاسخ : تغییر پیوندهای یکتا پیش فرض سایت وردپرس در فانکشن
میتونید از این تکه کد استفاده کنید
موفق باشید
پاسخ : تغییر پیوندهای یکتا پیش فرض سایت وردپرس در فانکشن
نمیدونم چرا این کد رو میذارم عمل نمیکنه فقط میخوام روی برگه ها عمل کنه نه پست تایپ ها
کد 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 );
پاسخ : تغییر پیوندهای یکتا پیش فرض سایت وردپرس در فانکشن
نقل قول:
نوشته اصلی توسط
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 شود. در کل پیشنهاد نمی کنم دستی این کار را انجام دهید مگر بدهید یک برنامه نویس انجام دهد و در آخر بهتر است با افزونه های موجود کار کنید.