Я не совсем уверен , почему вы хотели бы хранить Post Meta в отдельной таблице, но у меня были ситуации, когда мне нужно было делать более безумные вещи.
Суть в том, что вы можете использовать свой Custom Meta Box для отображения полей формы, а затем обрабатывать эти поля формы с помощью собственной пользовательской функции на хуке save_post
.
Допустим, вы зарегистрировали пользовательский мета-блок с <input name="my_custom_table_field" />
в нем.Вместо использования update_post_meta()
на хуках save_post
можно написать функцию, которая управляет данными с помощью метода $wpdb->update
.Примерно так вы могли бы начать:
add_action( 'save_post', 'save_my_custom_data' );
function save_my_custom_data( $post_id ){
global $wpdb;
if( isset( $_POST['my_custom_table_field'] ){
$result = $wpdb->update(
'my_custom_table',
array(
'post_id' => $post_id,
'my_custom_table_field' => $_POST['my_custom_table_field'],
),
array(
'post_id' => $post_id
),
array(
'%d',
'%s'
),
array (
'%d'
)
);
});
}
Вы, конечно, захотите убедиться, что обрабатываете данные должным образом, прежде чем сохранить их.И снова, я не уверен, , почему вам понадобится настраиваемая таблица "meta", но я не могу сказать, что вы не должны (особенно в зависимости от вашего конкретного варианта использования) - но что-то вродевышеприведенное поможет вам начать.
Подводя итог:
- Отображение вашего пользовательского мета-поля с функциями метабокса WP
- Обработка ловушки
save_post
для ваших пользовательских полейотдельно - Выполните санитарную обработку, обрезку или иным образом убедитесь, что сохраняемые данные должны храниться в соответствии с рекомендациями для типа поля
- . Для обновления используйте глобальный класс
$wpdb
.it.
Также отметим, что этот ответ не входит в СОЗДАНИЕ таблицы базы данных - потому что это зависит от вашего механизма хранения, конкретных потребностей в индексировании и т. д. Но в целом вы должны иметь возможность искатьдля «создания таблицы базы данных на [любом языке хранения]», чтобы получить пошаговое руководство по созданию таблицы, - затем используйте схему выше для хранения данных в ней.