رفتن به مطلب

قرار دادن یک شماره اختصاصی برای هر نوشته


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

باسلام خدمت دوستان!

می خواهم برای هر نوشته یک شماره 10 رقمی قرار بدم که در همان نوشته به نمایش در بیاید و همچنین در قسمت نوشته ها در پیشخوان یک ستون اضافه شود و در جلوی هر نوشته شماره 10 رقمی همان نوشته را نشان دهد

ممنون می شوم از دوستان کسی کمک نماید

اون شماره میتونه به صورت تصادفی نشون داده بشه یا تاریخ و ای دی نوشته رو به صورت پشت یرهم نمایش بده

تعداد ارقام مهم نیست مثلا 11 یا 12 تا هم شد ایراد نداره یا کمتر

لینک به ارسال

خب برای این کار میتونید از زمینه ی دلخواه استفاده کنید .

توی انجمن توضیح داده شده چجور عمل کنید دوست عزیز

لینک به ارسال

خب برای این کار میتونید از زمینه ی دلخواه استفاده کنید .

توی انجمن توضیح داده شده چجور عمل کنید دوست عزیز

نه می خوام اتوماتیک یک شماره منحصر به فرد اختصاص بده و توی قسمت نوشته ها در یک ستون جلوی هر نوشته نمایش داده بشه

شماره می تونه ترکیبی از ایدی نوشته به همراه زمان باشه ولی به صورت متصل تا بدین شکل یک شماره منحصر به فرد برای هر نوشته وجود داشته باشد

ویرایش شده توسط saeedagha
لینک به ارسال

این کد به درد شما می خوره.این کد را در قسمت دلخواه single.php قرار دهید.


kod khabar:<?php the_ID(); ?>

و بعد برای اینکه این کد را در پنل مدیریت خود ببینید از افزونه WP Show IDs استفاده کنید.

لینک به ارسال

این کد به درد شما می خوره.این کد را در قسمت دلخواه single.php قرار دهید.


kod khabar:<?php the_ID(); ?>

و بعد برای اینکه این کد را در پنل مدیریت خود ببینید از افزونه WP Show IDs استفاده کنید.

ای دی نوشته یک کد یک یا دو سه رقمی است منظور من ترکیبی از تاریخ به همراه ای دی بود مثلا یک همچین عدد ی

1392052089

که هشت رقم اول تاریخ یعنی 20 مرداد 92 و عدد 89 هم به عنوان ای دی نوشته

توجه کنید که این یک شماره منحصر به فرد میشه چون ای دی منحصر به فرد است

حالا این اعداد را چگونه برای هر پست اختصاص بدهم و همچنین در قسمت نوشته ها در پبشخوان هم نمایش داده شود

ممنون

ویرایش شده توسط saeedagha
لینک به ارسال

از تابع rand نباید استفاده بشه - چون با هر بار رفرش شدن تغییر خواهد کرد. پس:

اول متاباکسی می سازید به اسم مثلاً : serialpost

بعد متغیری تعیین می کنید که دو بخش داره:


<?php echo get_the_date(Ymd) , get_the_ID(); ?>

این تابع اول تاریخ و بعد آی دی پست رو میاره که همیشه ثابتند - می تونید هر فرمول محاسباتی بهش بدید مثل جمع و ضرب تا طولانی تر بشه (گرچه توصیه نمیشه)

حالا باید کاری کنید که در زمان انتشار پست ، مقدار متاباکس به طور خودکار مقدارشو از این متغیر بگیره که محول میشه به تعریف تابعی در فایل فانکشن با خاصیت:


wp_is_post_revision($post_ID)

تا اینجا رو برید جلو - بعد می رسیم به نمایش متا باکس در پنل ادمین

لینک به ارسال

با تشکر از دوستان

تا اینجا پیش رفتم که با استفاده از


<?php echo get_the_date(Ymd) , get_the_ID(); ?>

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

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

یا همینجا توضیح بدهید (آشنایی با برنامه نویسی مبتدی :( )

متا باکس همون زمینه دلخواه هست؟

اگه همونه من از این


$values = get_post_custom_values("serialpost"); echo $values[0];

استفاده میکنم

ویرایش شده توسط saeedagha
لینک به ارسال

خب اولین کار اینه که یک زمینه دلخواه با مقداری که در پست 6 آمده تولید کنیم.

تابع زیر این امکان را می دهد که بدون آنکه بطور دستی زمینه دلخواه را در پست ایجاد کنید و سپس به آن مقدار دهید، هر دو کار را بصورت خودکار انجام میدهد. یعنی وقتی پست منتشر می شود بصورت خودکار زمینه دلخواه را تولید کرده و به آن مقدار می دهد: در اینجا نام زمینه دلخواه را برابر serialpost گرفته ام:


function add_serialpost_custom_field($post_ID) {
global $wpdb;
if(!wp_is_post_revision($post_ID)) {
add_post_meta($post_ID, 'serialpost','1',true);
$isk = get_the_date(Ymd).get_the_ID();
update_post_meta($post_ID,'serialpost',$isk);
}
}
add_action('publish_post', 'add_serialpost_custom_field');

کار تمام شد - از این به بعد شماهر پستی را که تولید کنید، برای آن پست زیمنه دلخواه serialpost با مقدار ترکیبی تاریخ انتشار و آی دی پست تولید می کند. علاوه بر آن برای پست های قبلی هم به شر آنکه مجدداً ذخیره شوند همین کار را انجام خواهد داد.

در کد بالا مقدار اولیه را برایر یک گرفتم تا دوستانی که تمایل به توسعه دارند بتوانند انجام دهند.

اما برای اینکه این serialpost یا هر زمینه دلخواه دیگر در پنل ادمین و در یک ستون نمایش داده شود دو تابع زیر استفاده گردد:


function add_new_column_to_admin_pannel( $column ) {
$column['serial'] = 'Serial';
return $column;
}
add_filter( 'manage_posts_columns', 'add_new_column_to_admin_pannel' );
function add_value_to_above_column( $column_name, $post_id ) {
$custom_fields = get_post_custom( $post_id );
switch ($column_name) {
case 'serial' :
echo $custom_fields['serialpost'][0] . '';
break;
default:
}
}
add_filter( 'manage_posts_custom_column', 'add_value_to_above_column', 10, 2 );

که البته می توایند با array ستون های دیگری نیز اضافه نمایید.

ویرایش شده توسط isk
لینک به ارسال

برای نوشته هایی که قبلا منتشر شدهاند نمیشه کاری کرد؟

ممنون از همهدوستان واقعا مثل همیشه عالی هستین

ویرایش شده توسط saeedagha
لینک به ارسال

یکی از راه های کلی و ساده اینه که کوئری مناسبی برای دیتابیس بنویسید. مثلاً:


INSERT INTO wp_postmeta (post_id, meta_key, meta_value)
SELECT wp_posts.ID, 'serialpost', '10'
FROM wp_posts
WHERE wp_posts.post_status = 'publish' and wp_posts.post_type = 'post';

اما این کوئری بهتمام پست ها زمینه دلخواه با مقدار ثابت مثلاً 10 رو اضافه می کنه که با صورت مسئله شما فرق داره.

راه دیگه اینه که از افزونه های بالک آپدیت استفاده بشه که اکثر این افزونه ها هم مستقیماً روی دیتابیس می نویسند و توابع رو اجرا نمی کنند - پس باز هم به صورت مسئله شما فرق داره.

راه سوم اینه که در پنل ادمین همه ی پست ها رو انتخاب کنید - کارهای دسته جمعی رو انتخاب کنید - همه پست ها رو به حالت پیش نویس ببرید - ذخیره کنید و مجدداً همه اونها رو هم به همین ترتیب به حالت منتشر شده برگردونید. اما طبق اون اتفاقی که در post.php‌ و edit.php‌ تعریف شده باز هم در این صورت توابع اجرا نمیشن. پس باز هم با صورت مسئله شما تفاوت داره.

راه چهارم اینه که نوشته های قبلی رو تک به تک باز کرده و کلید به روزرسانی رو کلیک کنید که در اینصورت توابع اجرا میشن. اما با زمان بری بالا!

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

لینک به ارسال

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

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

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

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

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

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

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

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

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