#wordpress
#wordpress
Вопрос:
У меня есть база структурированных данных, которые я хочу отобразить в WordPress в виде сообщений. Я мог бы импортировать их в базу данных wordpress, но тогда мне пришлось бы синхронизировать это зеркало данных с основной базой данных, что добавило бы всевозможных сложностей.
Я не смог найти правильные хаки действий, чтобы переопределить базу данных, из которой они извлекаются, а функциональность пользовательского типа записи звучит так, как я хочу, но, похоже, имеет смысл только при извлечении из базы данных WordPress.
Я мог бы просто использовать пользовательские теги шаблонов для отображения своих данных, но эти сообщения все равно были бы извлечены из базы данных wordpress.
Я просмотрел некоторые плагины для размещения объявлений о недвижимости и плагины для управления спортивными командами для wordpress, поскольку это похоже на аналогичную проблему, хотя я не имею дело со списками недвижимости или спортивными командами, но они все еще хранят информацию в базе данных wordpress.
Помимо разветвления wordpress для работы с классами post и query, которые кажутся кроличьей норой, я не хочу опускаться, какие у меня есть варианты? Другие плагины, решающие ту же проблему, также были бы полезны.
Я новичок в разработке WordPress, но не в веб-разработке.
редактировать: было бы приемлемо, но не идеально, иметь пользовательские данные в той же базе данных, что и wordpress, если это необходимо или упрощает задачу.
Ответ №1:
Вы можете создавать таблицы в WordPress и взаимодействовать с этими таблицами, как с любыми другими таблицами базы данных. WP поставляется с рядом полезных функций, которые сэкономят ваше время. Чтобы установить начальную таблицу, вы хотите использовать dbdelta
функцию. Кодекс приводит это в качестве примера:
global $jal_db_version;
$jal_db_version = "1.0";
function jal_install() {
global $jal_db_version;
$table_name = $wpdb->prefix . "liveshoutbox";
$sql = "CREATE TABLE " . $table_name . " (
id mediumint(9) NOT NULL AUTO_INCREMENT,
time datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
name tinytext NOT NULL,
text text NOT NULL,
url VARCHAR(55) DEFAULT '' NOT NULL,
UNIQUE KEY id (id)
);";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
add_option("jal_db_version", $jal_db_version);
}
function jal_install_data() {
$welcome_name = "Mr. WordPress";
$welcome_text = "Congratulations, you just completed the installation!";
$rows_affected = $wpdb->insert( $table_name, array( 'time' => current_time('mysql'), 'name' => $welcome_name, 'text' => $welcome_text ) );
}
Смотрите http://codex.wordpress.org/Creating_Tables_with_Plugins подробнее.
Далее, для любой из ваших функций CRUD, вы захотите использовать класс WP_Query. Кодекс прекрасно объясняет, как работает каждая из этих функций: http://codex.wordpress.org/Function_Reference/WP_Query.
Я бы рекомендовал разработать ваш плагин с функциональностью пользовательского типа записи, если это вообще возможно. Если вы сделаете это, это просто будет лучше работать с WP, другие плагины будут работать с ним лучше, и пользователям будет легче понять, как управлять вашим плагином. В кодексе был отличный документ, в котором говорилось о том, чтобы без необходимости не создавать больше таблиц в базе данных WP, но, похоже, я не могу его найти. Возможно, кто-то другой может указать вам на это.
Комментарии:
1. Я не буду создавать никаких таблиц с помощью этого плагина, я просто смирился с тем фактом, что базе данных WordPress придется жить в моей рабочей базе данных с префиксом. Спасибо за 1 к пользовательскому типу записи, похоже, это то, что мне нужно сделать, чтобы другие функции WP и плагины работали с ним. CRUD не будет проблемой, поскольку эти данные управляются вне WordPress.
2. @Freshawk — извините за недоразумение. Мне все еще было бы интересно лучше понять проблему и обсудить некоторые возможности.
3. Итак, у меня есть база данных списков недвижимости, все операции CRUD управляются за пределами WordPress существующей системой («менеджер»). Что я хочу сделать, так это отобразить эти списки в формате блога с помощью WordPress. Было бы замечательно, если бы функции поиска / пометки / и т.д. WordPress работали для этих «сообщений» о недвижимости.
4. Я не могу импортировать данные в wordpress, поскольку при выполнении операций CRUD в диспетчере они должны быть немедленно отражены в wordpress, и я все равно не хочу иметь дело с этой уродливой проблемой синхронизации.
5. В идеале я хотел бы, чтобы база данных WordPress была отделена от существующей базы ДАННЫХ manager, но я почти уверен, что это либо невозможно, либо слишком сложно.