Wordpress фильтр при добавлении мета? - PullRequest
0 голосов
/ 31 декабря 2011

В WordPress мне нужно запрограммировать его так, чтобы каждый раз, когда кто-то вводил или обновлял мета-запись post, называемую «start_date», выполнялось немного кода на том, что было введено до его сохранения.

Мне нужно взять введенное и преобразовать его в метку времени Unix.

Есть ли способ сделать это?

Если нет, есть ли способ добавить код при публикации или обновлении сообщения, чтобы он проверял эту мету и обновлял ее при необходимости?

1 Ответ

0 голосов
/ 31 декабря 2011

Предполагая, что вы создаете метабоксы и настраиваемые поля с помощью своего плагина, вы можете сделать следующее.В противном случае, это зависит от того, как они сохранят данные, поскольку они могут перезаписать ваши.

Вот кое-что для начала, хотя в зависимости от ситуации.

add_action('save_post', 'update_the_post_meta', 100, 2);
function update_the_post_meta($post_id, $post) {

    if ( defined('DOING_AJAX') && DOING_AJAX ) { return; }
    if ( defined('DOING_CRON') && DOING_CRON ) { return; }
    if ($post->post_type == 'revision') { return; }

    if ( isset($_REQUEST['start_date']) ) :
        //do your timestamp code here and save it in $timestamp
        add_post_meta($post_id, 'start_date', $timestamp, true) or update_post_meta($post_id, 'start_date', $timestamp); 
    else :
        delete_post_meta($post_id, 'start_date');
    endif;

}

Прямо сейчас приоритетadd_action установлено на 100 (чем больше число, тем меньше приоритет у него).Поэтому, если вы пытаетесь переопределить чужую функцию, вам может потребоваться увеличить число приоритетов.Кроме того, это предполагает, что имя поля ввода - "start_date".

...