Когда я создаю новое сообщение, сразу после нажатия «Добавить новое» , когда отображается редактор сообщений, вместо того, чтобы использовать раскрывающийся список и выбирать настраиваемое поле для использования, я хотел бы уже иметь некоторые входные данные настраиваемого поля по умолчанию. открытый конец.
Визуально вместо:
Я хотел бы иметь что-то вроде:
Я знаю, что для этого есть плагины (CPT, More fields и т. Д.), Но я бы хотел простой способ сделать это с помощью базовой функции.
Я пробовал что-то вроде этого (я использую пользовательский тип записи «продукт»):
function register_custom_fields( $post_ID ) {
global $wpdb;
if( !wp_is_post_revision( $post_ID ) ) {
add_post_meta( $post_ID, 'reference', '', true);
add_post_meta( $post_ID, 'price', '', true);
}
}
add_action('edit_product', 'register_custom_fields');
Но это не похоже на работу. Я думаю, что хук, вероятно, неправильный (потому что edit_post
приходит после обновления), но я не вижу хука для «нового сообщения» (сразу после того, как пользователь нажимает «новое сообщение» в wp admin). Есть ли ?
Или, может быть, вся идея неверна и есть другой способ?
источник
Это правильный метод для добавления поддержки пользовательских полей (вы не получаете пустые поля при редактировании сообщений)
источник
Вы должны использовать действие save_post и изолировать свою операцию, проверив тип поста, так как он работает на всех типах постов. Очевидно, есть еще логика, которую вы должны будете встроить в нее, чтобы она работала на вас. Вам, вероятно, следует установить мета-поле поста, которое проверяет, установлены ли вы по умолчанию один раз, чтобы ваши пользователи не разочаровались, если они захотят оставить мета-поле поста пустым.
Если вы хотите, чтобы значения по умолчанию были нулевыми (как видно из вашего примера кода), не создавайте функцию, потому что это просто добавляет накладные расходы, а мета поля post не заполняются значениями по умолчанию.
источник
Я хочу получить уникальное мета-описание для каждого пользовательского поста на разрабатываемом сайте WP. Поэтому я также искал поле по умолчанию и попал сюда.
Я знаю, что это довольно старая запись, но я решил опубликовать простой ответ, который нашел на mariokostelac.com .
kg - это мое пространство имен, вы можете назвать функцию как хотите. Я довольно плохо знаком с хуками и настройкой WP в целом, но я считаю, что wp_insert_post - это тот хук, который вы ищете.
источник
get_post_type()
. Кроме того, при проведении свободного сравнения следует использовать синтаксис условия стиля YODA.get_post_type($post_id)
лучше чем$_GET['post_type']
?'page' === $_GET['post_type']
. Иначе, когда вы забудете один,=
вы можете оказаться в ситуации, когда вы назначаете значение вместо сравнения двух значений. И это окажется мусором в вашей базе данных. Вы также можете использовать===
безопасное сравнение типов (это значениеpage
? И значение типаstring
?)'page' === get_post_type($post_id)
?если кому-то нужно взять пользовательское поле по типу поста, я оставлю код ниже, как я сделал, и отлично работает для меня :)
} add_action ('wp_insert_post', 'awh_field_type');
источник