2013-11-30 3 views
6

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

Чтобы достичь этого, я пытаюсь зарегистрировать новый статус сообщения, используя следующий код:

add_action('init', 'registerStatus', 0); 

function registerStatus() 
{ 
    $args = array(
     'label'      => _x('Expired', 'Status General Name', 'z'), 
     'label_count'    => _n_noop('Expired (%s)', 'Expired (%s)', 'z'), 
     'public'     => true, 
     'show_in_admin_all_list' => true, 
     'show_in_admin_status_list' => true, 
     'exclude_from_search'  => true 
    ); 

    register_post_status('expired', $args); 
} 

Проблема заключается в том, что я не могу видеть, зарегистрированный статус сообщения либо в сообщениях WordPress, либо в моем обычае статусы post post post.

Я что-то не так?

ответ

5

Функциональность статусов пользовательских сообщений все еще находится в разработке (как и в течение последних четырех лет!), См. https://core.trac.wordpress.org/ticket/12706 и комментарии к https://wordpress.stackexchange.com/q/67655/25765. Более полезная информация здесь: https://wordpress.stackexchange.com/search?q=register_post_status.

Лично я бы категорически отказался от реализации пользовательских статусов сообщений, но если это действительно необходимо, вы можете взглянуть на то, как его обрабатывает плагин Edit Flow.

2

Эта функция still pending for future development

ВНИМАНИЕ: Эта функция не добавляет зарегистрированный статус сообщения в панели администратора. Эта функциональность ожидает дальнейшего развития. См. Trac Ticket #12706. Для добавления этого параметра рассмотрите крючок действия post_submitbox_misc_actions.

1

В настоящее время Ноябрь 2014 года и по-прежнему выпускает пользовательские статусы. Я думаю, что исходный код опубликован. Вот видео, показывающее проблему, с которой вы столкнетесь при реализации пользовательского статуса сообщения. Может возникнуть обходное решение, то есть подключение к запросу по почте и выполнение пользовательского запроса, но я не начал исследования.

Screencast of posts not showing in the All table when a custom status is applied, however the posts can be found in the table view for each custom status. Click here to view short clip.

Это скринкаст принимал в то время как я работал над новым WTG плагин Задачи Manager. Я оставлю свой проект в плагине так, как он есть, и, надеюсь, он помогает поощрять улучшения в этой области WordPress.

Для правильного ответа ... мой пользовательский статус отображается на экране «Редактировать сообщение» для моего настраиваемого типа сообщений, чтобы это было возможно. Если вы хотите взглянуть на мои плагины, регистрация пользовательских типов сообщений и статусов перейдите в каталог «posttypes/tasks.php» и поиграйте с рабочим примером. Вот официальная страница плагинов ...

https://wordpress.org/plugins/wtg-tasks-manager/

7

Благодаря Райан Bayne я был в состоянии добавить статус таможенного поста в админ-панели на странице редактирования пост. Не существует фильтра wordpress. Его решение с jQuery идеально. Вот код, если кто-то ищет решения:

add_action('post_submitbox_misc_actions', 'my_post_submitbox_misc_actions'); 
    function my_post_submitbox_misc_actions(){ 

    global $post; 

    //only when editing a post 
    if($post->post_type == 'post'){ 

     // custom post status: approved 
     $complete = ''; 
     $label = ''; 

     if($post->post_status == 'approved'){ 
      $complete = 'selected=\"selected\"'; 
      $label = '<span id=\"post-status-display\"> Approved</span>'; 
     } 

     echo '<script>'. 
       'jQuery(document).ready(function($){'. 
        '$("select#post_status").append('. 
         '"<option value=\"approved\" '.$complete.'>'. 
          'Approved'. 
         '</option>"'. 
        ');'. 
        '$(".misc-pub-section label").append("'.$label.'");'. 
       '});'. 
      '</script>'; 
    } 
} 
+3

В WP 4.8.2 вы должны изменить '$ LABEL = ' Approved'; 'to' $ label = 'Approved'; 'и' '$ (". misc-pub-section label"). append (".. $ label.'"); '. 'to'' $ (". misc -pub-section # post-status-display "). append (" '. $ label.' "); '.'. Для справки: https://wordpress.org/support/topic/custom-post-status-display/ – Iurie

Смежные вопросы