Автоматическое заполнение пользовательского поля со сложным значением, которое увеличивается на единицу?

Может ли кто-нибудь помочь мне разобраться в этом?

Я использую WP 3.5.2, и у меня есть тип сообщений «Заказы», ​​где находится пользовательское поле purchase_order.

Это образец записи заказа на поставку:

POCOS20130051

PO – это префикс, который всегда один и тот же

CO – первые 2 буквы имени сайта – если имя сайта «Coca Cola» – появится CO (если я изменю имя сайта, это тоже изменится)

S – всегда одно и то же

2013 – текущий год

0051 – число, увеличивающееся на 1 при нажатии «Добавить новый порядок». Должно быть 4 символа. Если число равно 1, то появится 0001.

Теперь….

Мне нужно это как крючок, который автоматически сгенерирует и автоматически заполнит мою заявку buy_order. Номер PO должен быть сгенерирован как уникальная запись.

Функция должна подсчитывать «опубликованные и составленные» типы сообщений заказа, а затем увеличивать это число на единицу, поэтому можно создать последнюю часть номера заказа (0051).

Для справки, пожалуйста, посмотрите, как этот парень решил что-то подобное http://www.codeproject.com/Articles/491733/Auto-generated-sequence-number-in-SQL-Server

Благодарю.

Solutions Collecting From Web of "Автоматическое заполнение пользовательского поля со сложным значением, которое увеличивается на единицу?"

Полагаю, вам нужно где-то глобально сохранить последний номер заказа. Предпочтительно в таблице wp_options. Метод update_option поможет вам. Затем вам нужно создать функцию, которая будет срабатывать каждый раз при появлении нового порядка.

что-то вроде того:

 add_action( 'save_post', 'setOrderNumber'); function setOrderNumber($post_id) { $slug = 'orders'; // slug of your post_type called "Orders" if ( $slug != $_POST['post_type'] ) { return; } if ( !current_user_can( 'edit_post', $post_id ) ) { return; } $counter = get_option( 'lastOrderCount' ); // example 0051 $counter++; // returns 0052 update_post_meta($post_id, 'purchase_order', 'POCOS'.date('Y').$counter); update_option( 'lastOrderCount', $counter ); // set the new number of order. } 

Я не проверял эту функцию, но надеюсь, что это сработает.