Это - плохая практика для составления собственной таблицы для плагина?

Если я хочу сохранить настройки для своего плагина затем, это является довольно легким и прямым.

Теперь я хотел бы сохранить к базе данных немного больше.

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

11
01.06.2012, 13:57
4 ответа

Я редко не соглашаюсь с в других отношениях хорошо осведомленными пользователями, но в этом случае я не могу помочь ему. По-моему, называя использование неосновных таблиц базы данных плохая практика по сути является просто неправильной.

Выбор того, пойти ли с базовыми таблицами или добавить Ваше собственное, зависит от нескольких факторов.

Время выполнения запроса зависит от размера таблицы. Следовательно, если Вы будете планированием хранения существенных объемов данных, то отдельная таблица, угождающая просто этому типу определенного набора данных, неизбежно будет более эффективным решением.

Если Вы храните много обычных сообщений или CPTs вместе с этими определенными наборами данных, wp_posts а также wp_postmeta может вырасти быстро.

Для меня этот выбор в конечном счете зависит от того, как "posty" данные. Это должно поддерживать автора, комментарии, изменения, выборки и т.п.? Если так, я пойду с CPTs и/или базовой функциональностью. В противном случае я пойду с отдельными таблицами ради использования ресурсов и эффективности.

Если бы понятие Eugene было корректно, то ни один из существующих правильно написанных плагинов не добавил бы их собственные таблицы, который, к счастью, не имеет место.

13
19.02.2020, 22:00
  • 1
    я не могу upvote это. "Что Вы являетесь самыми довольными", абсолютно не допустимое соображение. Существуют допустимые варианты использования для использования отдельных таблиц, но для подавляющего большинства Плагинов, лучшая практика диктует ядро использования Таблицы базы данных WP. –  Chip Bennett 01.06.2012, 14:54
  • 2
    Справедливый enuff @ChipBennett - который не должен был быть частью обоснования или не "рассуждает" во-первых. Отредактированный и удаленный (все еще ожидание upvote - представитель не является единственной мотивацией так или иначе). –  Johannes Pille 01.06.2012, 15:22
  • 3
    +1. Я думаю, что это - разумный, хорошо продуманный ответ. :) –  Chip Bennett 01.06.2012, 15:26

Используя базовые Таблицы базы данных WP лучшая практика

  1. Используя базовые Таблицы базы данных делает Ваши данные более портативными, и легче скопировать, так как они будут обработаны базовым средством экспорта/средством импорта, а также бесчисленными резервными Плагинами
  2. Используя базовые Таблицы базы данных делает Ваши данные легче и более безопасными управлять, так как у Вас будет более интуитивный доступ к различным функциям ядра WordPress связанным с запросами, добавлением, изменением, удалением и очисткой данных DB, особенно через очень мощное $wpdb класс.
  3. Используя базовые Таблицы базы данных поощряет/упрощает лучшие практики для классификации данных и устройства хранения данных, такие как хранение опций Plugin как массив в одной строке в wp_options, и вынуждая Сменного разработчика рассмотреть тщательно тип данных того, чтобы быть создавал/хранил - действительно ли это - CPT? действительно ли это - таксономия? это, отправляют meta?
  4. Ваш Плагин, менее вероятно, оставит позади хлам при использовании базовых Таблиц базы данных.

WordPress обеспечивает средство для Плагинов для добавления таблиц к его базе данных

Однако для тех вариантов использования, где отдельная Таблица базы данных необходима, убедиться использовать метод, что WordPress предусматривает добавление Вашей пользовательской таблицы на базу данных WordPress, особенно так, чтобы можно было использовать в своих интересах мощное $wpdb класс. Отметьте информацию/протесты эта запись Кодекса списки:

  • Информация об установке - пользовательский выбор, который вводится, когда пользователь сначала настраивает Ваш плагин, и не имеют тенденцию расти очень кроме того (например, в связанном с тегом плагине, выборе пользователя относительно формата облака тегов на боковой панели). Информация установки будет обычно храниться с помощью механизма опций WordPress.

  • Данные - информация, которая добавляется как пользователь, продолжает использовать Ваш плагин, который является обычно расширяемой информацией, связанной с сообщениями, категориями, загрузками и другими компонентами WordPress (например, в связанном со статистикой плагине, различных просмотрах страницы, ссылающихся доменах и другой статистике, связанной с каждым сообщением на Вашем сайте). Данные могут храниться в отдельной таблице MySQL, которая должна будет быть составлена. Прежде, чем вскочить с совершенно новой таблицей, однако, рассматривают, храня данные Вашего плагина в Сообщении WordPress, Meta (иначе Пользовательские Поля) работал бы. Сообщение Meta является предпочтительным методом; используйте его, когда возможно/практично.

Таким образом мы можем завершить следующее:

  1. Хранить данные (установка, или сгенерированный пользователями) в базовых таблицах WP является лучшей практикой
  2. Существуют допустимые примеры использования для создания пользовательских Таблиц базы данных; поэтому, создание пользовательских Таблиц базы данных нельзя рассмотреть как свойственную плохую практику
  3. При создании пользовательских Таблиц базы данных WordPress обеспечивает реализацию лучшей практики
5
19.02.2020, 22:00
  • 1
    я могу upvote это. ;-) +1 для того, чтобы явно упомянуть $wpdb (использование его идущий с неосновными таблицами подразумевалось в моем ответе, не будет хотеть пропускать тот класс), –  Johannes Pille 01.06.2012, 15:24
  • 2
    я первоначально предположил, что "собственные Таблицы базы данных" подразумевали таблицы вне базы данных WP; после того как я закончил тупик того неправильного предположения, вопрос (и ответы/комментарии) стал более ясным. Право :) –  Chip Bennett 01.06.2012, 15:27

Можно загрузить файлы в библиотеку мультимедиа. Каждый объект в библиотеке мультимедиа хранится это wp_posts таблица. Это означает, что каждый файл может иметь метаданные. Можно сохранить столько информации, сколько Вам нужно на каждый файл в wp_postmeta таблица при помощи Метаданных API.

Это - плохая практика для составления собственной таблицы для плагина?

Да, это - плохая практика для составления собственной таблицы, если можно использовать базовую функциональность вместо этого.

0
19.02.2020, 22:00
  • 1
    нет, это не плохая практика. Если Вы не считаете более медленные запросы и код с сильной связью хорошей практикой. –  onetrickpony 01.06.2012, 14:32
class TMM {

    public static $options;

    public static function register() {
        self::$options = get_option(TMM_THEME_PREFIX . 'theme_options');
    }

    public static function get_option($option) {
        return @self::$options[$option];
    }

    public static function update_option($option, $data) {
        self::$options[$option] = $data;
        update_option($prefix . 'theme_options', self::$options);
    }

    //ajax
    public static function change_options() {

        $action_type = $_REQUEST['type'];
        $data = array();
        parse_str($_REQUEST['values'], $data);
        $data = self::db_quotes_shield($data);

        if (!empty($data)) {
            foreach ($data as $option => $newvalue) {
                if (is_array($newvalue)) {
                    self::update_option($option, $newvalue);
                } else {
                    $newvalue = stripcslashes($newvalue);
                    $newvalue = str_replace('\"', '"', $newvalue);
                    $newvalue = str_replace("\'", "'", $newvalue);
                    self::update_option($option, $newvalue);
                }
            }
        }
        _e('Options have been updated.', TMM_THEME_FOLDER_NAME);
        exit;
    }

    public static function db_quotes_shield($data) {
        if (is_array($data)) {
            foreach ($data as $key => $value) {
                if (is_array($value)) {
                    $data[$key] = self::db_quotes_shield($value);
                } else {
                    $value = stripslashes($value);
                    $value = str_replace('\"', '"', $value);
                    $value = str_replace("\'", "'", $value);
                    $data[$key] = $value;
                }
            }
        }

        return $data;
    }

}

  • Название класса является настоящим, переименуйте его, как Вы желаете.
  • В функциях добавляют php: add_action ('init', массив ('TMM', 'регистр'), 1);
  • И добавьте для ajax: add_action ('wp_ajax_change_options ', массив (' TMM ', ' change_options'));
  • Для получения опции, где Вы должны использовать это (например): $logo_img = TMM:: get_option ('logo_img');
  • Используйте его для сохранения опций собственными методами Wordpress
0
19.02.2020, 22:00

Теги

Похожие вопросы