tomauger
  • 0
Эксперт

Действие при изменении пользовательского типа записи?

  • 0

Есть ли явный хук действия, который срабатывает, когда (или непосредственно перед) страница редактирования администратора отображается для пользовательского типа сообщения? Что-то похожее на {$new_status}_{$post->post_type}?

Я пытаюсь найти наименее навязчивое место для вставки моей регистрации add_meta_box(), чтобы она не вызывала эту функцию при каждом обновлении страницы, а только тогда, когда это необходимо (например: пользователь хочет создать новый пользовательский пост или отредактировать существующий заказной пост).

Спасибо за ваши мысли / фрагменты кода!

Share
  1. register_post_type() имеет опцию регистрации под названием 'register_meta_box_cb' . Установите для этого допустимый обратный вызов, и он будет вызывать эту функцию только при компиляции мета-полей для экрана редактирования этого типа сообщения. Что-то вроде этого:

    register_post_type( 'foo', array(
      'public' => true,
      'label' => 'foo',
      'register_meta_box_cb' => 'bar',
    ));
    
    function bar(){
      add_meta_box('blah', 'blah', /* etc */ );
    }
    
    • 0
    • Чертовски выдающийся! Я пропустил это. Ваш ответ точно соответствует моим требованиям! Но, возвращаясь к моему первоначальному вопросу, есть ли способ подключиться, когда вызывается страница редактирования? Я даже пробовал edit_post, и это, похоже, не срабатывало ни при каких обстоятельствах (даже для сообщений!)

      • 0
    • Попробуйте ‘admin_head-edit.php’, если вы хотите, чтобы ваш код срабатывал на самой странице edit.php. ‘save_post’ и ‘edit_post’ срабатывают при сохранении изменений (включая автоматические черновики) в сообщении.

      • 0
    • Метод, опубликованный Джоном, является правильным способом добавления метабоксов к определенному типу сообщений, помимо этого метода, альтернативой является регистрация метабоксов в действии add_meta_boxes или add_meta_boxes-$type (эти действия существуют специально для регистрации метабоксов).

      • 0

Оставить ответ

You must login to add an answer.