رفتن به مطلب

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


پست های پیشنهاد شده

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

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

لینک به ارسال

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

لینک به ارسال

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

موفق باشید.

لینک به ارسال

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

موفق باشید.

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

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

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

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

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

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

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

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

لینک به ارسال

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

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


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

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

لینک به ارسال

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

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


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
لینک به ارسال

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

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

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

موفق باشید.

لینک به ارسال

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

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


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 کل کاری نداشته باشه احتمالا مشکلی پیش نمیاره !

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

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

لینک به ارسال

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

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

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

لینک به ارسال

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

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

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

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

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

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

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

لینک به ارسال

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

ادرس شما

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

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

سلام-دنیا?

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

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

لینک به ارسال

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

ادرس شما

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

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

سلام-دنیا?

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

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

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

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

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

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

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

ویرایش شده توسط آرشام . رادمهر
لینک به ارسال

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

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

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

بله

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

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

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

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

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

لینک به ارسال

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

بله

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

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

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

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

لینک به ارسال

خب برای این کار شما باید 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 );

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

لینک به ارسال

جناب 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 );

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

ویرایش شده توسط آرشام . رادمهر
لینک به ارسال
  • 3 هفته بعد...

به گفتگو بپیوندید

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

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...