PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : تغییر پیوندهای یکتا پیش فرض سایت وردپرس در فانکشن



elan
December 31st, 2018, 19:27
سلام دوستان

ببنید میخواستم وقتی برای یک برگه، 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

نمیدونم دیگه باید چه طور توضیح بدم.

SIBHost
December 31st, 2018, 19:56
درود بر شما

میتونید از این افزونه (https://wordpress.org/plugins/custom-permalinks/) استفاده کنید.

موفق و پیروز باشید

elan
December 31st, 2018, 19:57
نه اصلا نمیخوام از افزونه استفاده کنم و ادرس ریدایرکت بشه

SIBHost
December 31st, 2018, 20:19
میتونید از این تکه کد (https://wordpress.stackexchange.com/questions/101072/removing-parent-slug-from-url-on-custom-post-type) استفاده کنید

موفق باشید

elan
December 31st, 2018, 21:15
نمیدونم چرا این کد رو میذارم عمل نمیکنه فقط میخوام روی برگه ها عمل کنه نه پست تایپ ها




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 );

T.Toosi
January 1st, 2019, 14:24
نمیدونم چرا این کد رو میذارم عمل نمیکنه فقط میخوام روی برگه ها عمل کنه نه پست تایپ ها




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 شود. در کل پیشنهاد نمی کنم دستی این کار را انجام دهید مگر بدهید یک برنامه نویس انجام دهد و در آخر بهتر است با افزونه های موجود کار کنید.