Как мне структурировать плагин WordPress для извлечения данных из пользовательской базы данных для отображения в виде сообщений?

#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, но я почти уверен, что это либо невозможно, либо слишком сложно.