آرشام . رادمهر

حذف خودکار علامت ( ؟ ) از پیوند یکتای سایت و مطالب

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

با سلام ، آیا راهی هست که بشه علامت ( ؟ ) رو از پیوند یکتا به طور خودکار حذف کرد ؟ دقیقا مثه علامت ( ! ) که به طور خودکار از پیوند یکتا حذف میشه .

به عنوان مثال : الان اگه یه مطلبی بنویسیم که تو عنوانش علامت ( ! ) باشه ، این علامت رو از داخل پیوند یکتا حذف میکنه و فقط میزاره داخل عنوان باشه ، ولی واسه علامت ( ؟ ) اینجوری نیست . میخواستم ببینم امکانش هست که این عمل واسه علامت سئوال هم انجام بشه و فقط این علامت رو از پیوند یکتا حذف کنه ؟

0

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


لینک به پست

یعنی هیچ کس نمی دونه که باید چکار کنم؟ آخه چه جوری به صورت پیش فرض ، وردپرس علامت ( ! ) رو از پیوند یکتا ( لینک ها ) حذف میکنه ؟ واسه حذف خودکار علامت ( ؟ ) هیچ راهی نیست؟

0

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


لینک به پست

دوست عزیز، موردی که شما می‌فرمایید رو من در 3 سالی که دارم وردپرس کار میکنم ندیدم!! لطفاً واضح‌تر توضیح بدید که کدوم علامت سوال رو میفرمایید؟

موفق باشید.

0

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


لینک به پست

دوست عزیز، موردی که شما می‌فرمایید رو من در 3 سالی که دارم وردپرس کار میکنم ندیدم!! لطفاً واضح‌تر توضیح بدید که کدوم علامت سوال رو میفرمایید؟

موفق باشید.

ببینید شما وقتی به صفحه ی افزودن نوشته در پنل وردپرس میرید ، یک کادر واسه وارد کردن عنوان داره و یک پیوند یکتا که زیر اون کادره . تا اینجا که همه می دونن .

حالا وقتی به عنوان مثال بنده میخوام عنوانی واسه مطلبم بزارم که توش علامت تعجب ( ! ) باشه به این شکل میشه :

مثلا در کادر عنوان می نویسم : نوع کفش می تواند به سلامت مغز هم کمک کند !

در این حالت در زیر کادر عنوان که همون پیوند یکتا باشه عنوان بالا به صورت خودکار بدون علامت ( ! ) میشه : نوع کفش می تواند به سلامت مغز هم کمک کند

ولی اگه همین عنوان رو با علامت سئوال ( ؟ ) بنویسم : نوع کفش می تواند به سلامت مغز هم کمک کند ؟

در پیوند یکتا هم با علامت ( ؟ ) میاد : نوع کفش می تواند به سلامت مغز هم کمک کند ؟

من میخوام علامت ( ؟ ) هم مثل علامت ( ! ) از پیوند یکتا به صورت خودکار حذف شه و فقط در عنوان بمونه . باید چکار کنم ؟

امیدوارم منظورمو متوجه شده باشید .

0

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


لینک به پست

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

میتونید با یه هک ساده، این مورد رو هم حذف کنید.


function remove_persian_question_mark( $url, $post, $leavename ) {
// HOOK BY EHSAAN
$All_PostTypes = true; // Agar Mikhaid In Mored Roye Hameye Post Type Ha Emal Shavad, true Ra false Konid
if ( ! $All_PostTypes && $post->post_type == 'post' ) {
$url = str_replace( '؟', '', $url );
return $url;
}

$url = str_replace( '؟', '', $url );
return $url;
}
add_filter( 'post_link', 'remove_persian_question_mark', 10, 3 );

( فرصت تست هک را نداشتم )

2

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


لینک به پست

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

میتونید با یه هک ساده، این مورد رو هم حذف کنید.


function remove_persian_question_mark( $url, $post, $leavename ) {
// HOOK BY EHSAAN
$All_PostTypes = true; // Agar Mikhaid In Mored Roye Hameye Post Type Ha Emal Shavad, true Ra false Konid
if ( ! $All_PostTypes && $post->post_type == 'post' ) {
$url = str_replace( '؟', '', $url );
return $url;
}

$url = str_replace( '؟', '', $url );
return $url;
}
add_filter( 'post_link', 'remove_persian_question_mark', 10, 3 );

( فرصت تست هک را نداشتم )

به نظرم بهتره که این کار انجام نشه . چون اون موقع کوئری استرینگ ها از بین میرن .

البته اگه این هوک فقط روی url پست ها باشه و با url کل کاری نداشته باشه احتمالا مشکلی پیش نمیاره !

ویرایش شده در توسط hannanstd
1

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


لینک به پست

به نظرم بهتره که این کار انجام نشه . چون اون موقع کوئری استرینگ ها از بین میرن .

البته اگه این هوک فقط روی url پست ها باشه و با url کل کاری نداشته باشه احتمالا مشکلی پیش نمیاره !

دوست عزیز، هوک فقط ؟ را از بین میبره، نه ? که برای کوئری‌استرینگ مشکلی پیش بیاره.

موفق باشید.

1

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


لینک به پست

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

میتونید با یه هک ساده، این مورد رو هم حذف کنید.


function remove_persian_question_mark( $url, $post, $leavename ) {
// HOOK BY EHSAAN
$All_PostTypes = true; // Agar Mikhaid In Mored Roye Hameye Post Type Ha Emal Shavad, true Ra false Konid
if ( ! $All_PostTypes && $post->post_type == 'post' ) {
$url = str_replace( '؟', '', $url );
return $url;
}

$url = str_replace( '؟', '', $url );
return $url;
}
add_filter( 'post_link', 'remove_persian_question_mark', 10, 3 );

( فرصت تست هک را نداشتم )

تشکر . این کد رو داخل فانکشن گذاشتم و یک نوشته ی جدید با علامت ( ؟ ) نوشتم ولی علامت ؟ رو حذف نکرد و در کل تغییری ایجاد نکرد .

به نظرم بهتره که این کار انجام نشه . چون اون موقع کوئری استرینگ ها از بین میرن .

البته اگه این هوک فقط روی url پست ها باشه و با url کل کاری نداشته باشه احتمالا مشکلی پیش نمیاره !

کد بالا که جواب نداد . به نظر شما آیا راهی هست که بشه فقط علامت ؟ رو از پیوند یکتا حذف کرد و طبق گفته ی شما این حذف به گونه ای باشه که در آینده ایجاد مشکل نکنه ؟

یه جور باشه که به قول آقای احسان مثله علامت ؟ انگلیسی ، علامت ؟ فارسی هم به طور خودکار حذف شه .

0

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


لینک به پست

جناب آرشام . رادمهر

پیوندهای یکتا توسط خود سیستم از روی اسلاگخا ایجاد میشه و دلیل حذف ! و موندن ؟ این هست که تابعی که اسلاگ رو تو وردپرس میسازه ! رو حذف میکنه و اونو برای پست یا صفحه یا دسته بندی تو دیتابیس ذخیره میکنه

که حذف ؟ از عناوین برای شما مشکل ساز خواهد شد

3

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


لینک به پست

جناب آرشام . رادمهر

پیوندهای یکتا توسط خود سیستم از روی اسلاگخا ایجاد میشه و دلیل حذف ! و موندن ؟ این هست که تابعی که اسلاگ رو تو وردپرس میسازه ! رو حذف میکنه و اونو برای پست یا صفحه یا دسته بندی تو دیتابیس ذخیره میکنه

که حذف ؟ از عناوین برای شما مشکل ساز خواهد شد

حرف شما متین ، ولی میشه بفرمایید حذف علامت ؟ چه مشکلی رو ایجاد میکنه و تا چه حد می تونه واسه سایت خطرناک باشه ؟

آخه من همین کار رو در حال حاضر دارم به صورت دستی انجام میدم ( یعنی علامت ؟ رو از پیوند یکتای مطالب ( لینک مطالب ) که دارای علامت ؟ هستند ( از طریق ویرایش پیوند ) دارم به صورت دستی حذف می کنم و فقط در عناوین سایت میزارم بمونه ) و خداروشکر تا الان مشکل خاصی ندیدم !!! ( شایدم متوجه چیزی نشدم !!! )

این کار رو هم واسه این میکنم ، چون قبلا در مطالبی که در سایتهای مختلف دیده بودم ، گفته بودن که وجود علامت ؟ در لینک مطالب خوب نیست و ... .

ممنون میشم توضیح بیشتری بدید و بگید که چکار کنم ؟

1

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


لینک به پست

ببینید اسلاگ از روی عنوان ساخته میشه و در دیتابیس ذخیره میشه وقتی شما تو تنظیمات پیوندهای یکتا تنظیمات رو روی مثلا عنوان نوشته میزارین ادرسها و لینک پستها از روی این اسلاگها ساخته میشن حالا شما بیاید بدون تغییر اسلاگ ؟ رو حذف کنید خب وقتی وارد اون ادرس بشید با صفحه 404 مواجه میشید چون نمیتونه اون صفحه رو پیدا کنه مثلا

ادرس شما

http://www.sitename.com/سلام-دنیا

اسلاگ داخل دیتابیس

سلام-دنیا?

خب وقتی وردپرس کوئری میزنه دنبال سلام-دنیا میگرده در صورتی که تو دیتابیس سلام-دنیا? ذخیره شدس و نمیتونه پست رو پیدا کنه

وقتی شما پیوند رو ویرایش میکنین در واقع دارید یک اسلاگ جدید میسازید و به همین خاطر خطایی نمایش داده نمیشه و همه چیز خوب کار میکنه

3

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


لینک به پست

ارسال شده در (ویرایش شده)

ببینید اسلاگ از روی عنوان ساخته میشه و در دیتابیس ذخیره میشه وقتی شما تو تنظیمات پیوندهای یکتا تنظیمات رو روی مثلا عنوان نوشته میزارین ادرسها و لینک پستها از روی این اسلاگها ساخته میشن حالا شما بیاید بدون تغییر اسلاگ ؟ رو حذف کنید خب وقتی وارد اون ادرس بشید با صفحه 404 مواجه میشید چون نمیتونه اون صفحه رو پیدا کنه مثلا

ادرس شما

http://www.sitename.com/سلام-دنیا

اسلاگ داخل دیتابیس

سلام-دنیا?

خب وقتی وردپرس کوئری میزنه دنبال سلام-دنیا میگرده در صورتی که تو دیتابیس سلام-دنیا? ذخیره شدس و نمیتونه پست رو پیدا کنه

وقتی شما پیوند رو ویرایش میکنین در واقع دارید یک اسلاگ جدید میسازید و به همین خاطر خطایی نمایش داده نمیشه و همه چیز خوب کار میکنه

خیلی ممنون از توضیح خوبی که دادید .

با توجه به توضیحات شما واسه بنده سه سئوال ایجاد شد که تشکر میکنم پاسخ این سئوالات رو هم بدید .

1- اگه درست متوجه شده باشم ، پس با این حساب و طبق حرفهای شما ، یعنی اگه علامت " ؟ " رو به همین صورتی که دارم حذف می کنم ( یعنی به صورت دستی و از طریق ویرایش پیوند ) هیچ مشکلی واسه سایت و مطالب ایجاد نمیشه ، ولی اگه بخوام همین کارو ( حذف علامت ؟ ) به صورت خودکار انجام بشه و مثله حذف علامت " ! "باشه ، مطالبم با خطای 404 مواجه میشه . درست متوجه شدم ؟

2- با توجه به تجربیات شما ، آیا اینکه میگن علامت " ؟ " نباید داخل لینک مطالب باشه صحت داره ؟ یعنی لازمه که من علامت " ؟ " موجود در لینک مطالبم رو حذف کنم ؟

3- فرق بین علامت " ؟ " انگلیسی و علامت " ؟ " فارسی چیه ؟ آخه خود وردپرس علامت " ؟ " انگلیسی رو به صورت خودکار از لینک مطالب حذف می کنه ( دقیقا مثه علامت " ! " ) ، ولی علامت " ؟ " فارسی رو حذف نمی کنه !!!!

ویرایش شده در توسط آرشام . رادمهر
0

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


لینک به پست

خیلی ممنون از توضیح خوبی که دادید .

با توجه به توضیحات شما واسه بنده سه سئوال ایجاد شد که تشکر میکنم پاسخ این سئوالات رو هم بدید .

1- اگه درست متوجه شده باشم ، پس با این حساب و طبق حرفهای شما ، یعنی اگه علامت " ؟ " رو به همین صورتی که دارم حذف می کنم ( یعنی به صورت دستی و از طریق ویرایش پیوند ) هیچ مشکلی واسه سایت و مطالب ایجاد نمیشه ، ولی اگه بخوام همین کارو ( حذف علامت ؟ ) به صورت خودکار انجام بشه و مثله حذف علامت " ! "باشه ، مطالبم با خطای 404 مواجه میشه . درست متوجه شدم ؟

بله

البته به صورت اتوماتیک راه داره(که 404 نشه) اگه نیاز شما صرفا نمایش ندادن ؟ تو ادرس صفحات باشه

2- با توجه به تجربیات شما ، آیا اینکه میگن علامت " ؟ " نباید داخل لینک مطالب باشه صحت داره ؟ یعنی لازمه که من علامت " ؟ " موجود در لینک مطالبم رو حذف کنم ؟

فرق خاصی نداره بستگی به خود شما داره

3- فرق بین علامت " ؟ " انگلیسی و علامت " ؟ " فارسی چیه ؟ آخه خود وردپرس علامت " ؟ " انگلیسی رو به صورت خودکار از لینک مطالب حذف می کنه ( دقیقا مثه علامت " ! " ) ، ولی علامت " ؟ " فارسی رو حذف نمی کنه !!!!

به خاطر اینکه ؟ فارسی یک کاراکتر یونیکد هست و ? انگلیسی یک کاراکتر معمولی و وردپرس بخاطر pretty url کاراکترهای خاص special character ،اونو حذف میکنه

3

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


لینک به پست

واقعا خیلی خوب توضیح دادید . خیلی خیلی ممنون .

بله

البته به صورت اتوماتیک راه داره(که 404 نشه) اگه نیاز شما صرفا نمایش ندادن ؟ تو ادرس صفحات باشه

جنابlord_viper اگه راهی هست که بشه اولا : علامت ؟ رو به طور خودکار از لینک ها حذف کرد و ثانیا : کاری کرد که با اینکار واسه سایت مشکلی ایجاد نشه و لینک ها به خطای 404 نخورن ، بسیار بسیار ممنون میشم راهشو بفرمایید ، چون به این مورد خیلی نیاز دارم.

مگر اینکه هیچ راهی نباشه و مجبور باشم به طور دستی حذف کنم . ( خواهشا اگه چاره ای وجود داره لطف بفرمایید و بگید که دقیقا چکار کنم ؟ )

بازم یه دنیا ممنون .

0

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


لینک به پست

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

هوک اول برداشتن ؟ مثل کدی که احسان عزیز نوشتن با کمی تغییرات


function remove_persian_question_mark( $url, $post, $leavename ) {
// HOOK BY EHSAAN
$All_PostTypes = true; // Agar Mikhaid In Mored Roye Hameye Post Type Ha Emal Shavad, true Ra false Konid
if ( ! $All_PostTypes && $post->post_type == 'post' ) {
$url = str_replace( '؟', '', $url );
return $url;
}

$url = str_replace( '؟', chr(33), $url );
return $url;
}
add_filter( 'post_link', 'remove_persian_question_mark', 10, 3 );

هوک دوم استفاده قرار دادن ؟ تو کوئری پست با استفاده از هوک pre_get_posts

function add_persian_question_mark( $query ) {
if(!$query->is_main_query())
return $query;

$post_name = $query->get('name');
$query->set('name', str_replace(chr(33),'?',$post_name));
return $query;
}
add_action( 'pre_get_posts', 'add_persian_question_mark', 10, 3 );

(کد هوک دوم برای نمایش روال کار بوده و تست شده نیست)

2

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


لینک به پست

ارسال شده در (ویرایش شده)

جناب lord_viper کد زیر رو در فانکشن گذاشتم ولی عملا دوباره هیچ تغییری نکرد و علامت ؟ رو حذف نمیکرد

هوک اول برداشتن ؟ مثل کدی که احسان عزیز نوشتن با کمی تغییرات


function remove_persian_question_mark( $url, $post, $leavename ) {
// HOOK BY EHSAAN
$All_PostTypes = true; // Agar Mikhaid In Mored Roye Hameye Post Type Ha Emal Shavad, true Ra false Konid
if ( ! $All_PostTypes && $post->post_type == 'post' ) {
$url = str_replace( '؟', '', $url );
return $url;
}

$url = str_replace( '؟', chr(33), $url );
return $url;
}
add_filter( 'post_link', 'remove_persian_question_mark', 10, 3 );

و درخصوص کد زیر هم چیزی متوجه نشدم که دقیق باید چیکار کنم ؟ میشه بیشتر و به زبان مبتدیانه توضیح بدید ؟

هوک دوم استفاده قرار دادن ؟ تو کوئری پست با استفاده از هوک pre_get_posts

function add_persian_question_mark( $query ) {
if(!$query->is_main_query())
return $query;

$post_name = $query->get('name');
$query->set('name', str_replace(chr(33),'?',$post_name));
return $query;
}
add_action( 'pre_get_posts', 'add_persian_question_mark', 10, 3 );

(کد هوک دوم برای نمایش روال کار بوده و تست شده نیست)

ویرایش شده در توسط آرشام . رادمهر
0

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


لینک به پست

آقای lord_viper میشه لطف کنید و پاسخ بدید ؟ تاپیک رو رها نکنید خواهشا .

0

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


لینک به پست

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

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

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

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


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

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

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


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