Intereting Posts
Как отображать псевдоним пользователя по умолчанию вместо имени пользователя Как добавить разбивку на страницы в мой код? изменение размера изображения в содержимом Отображать одно сообщение из каждого термина в пользовательской таксономии Конфигурация сайта Как я могу выводить HTML в шаблон без его пропускания через фильтр кеширования? Выделять пользовательские виджеты в области администратора? все переключатели tincymce при обновлении страницы после перехода с html на текст в пользовательском метабоксе Дополнительная тема для детской темы Какова цель добавления файла .po? WordPress JSON API удаляет сообщения из определенной категории is_front_page не работает в functions.php Второй цикл WP_Query показывает данные из основного запроса Нужно ли регистрировать JQuery, если мы хотим использовать его в wp_enqueue_script ()? Как заменить текст «Защищенный паролем» на значок в Admin

Выделенное почтовое мета-поле против количества мета-полей

Я работаю над интеграцией сообщения, такого как count to my plugin. У меня возникли проблемы с пониманием логики, которая повлияет на производительность. Я нашел этот пост, который немного касается темы.

Я отслеживаю счет, IP-адрес пользователя, которому понравилась почта, и дата.

Scenerio One

+---------+---------+-------------+--------------------------------------------------------+ | col1 | col2 | col3 | col4 | +---------+---------+-------------+--------------------------------------------------------+ | meta id | post_id | meta_key | meta_value | | 33 | 294 | _like_count | array( 'count' => 25, 'date_modified' => '11-20-2017') | | 34 | 294 | _user_ip | 192.168.1.1 | | 35 | 294 | _user_ip | 192.168.1.21 | +---------+---------+-------------+--------------------------------------------------------+ 

Я понимаю, что не так, как в WordPress хранит массивы, это просто для иллюстрации точки

Сценарий два

 +---------+---------+------------+----------------------------------------------------------------------+ | col1 | col2 | col3 | col4 | +---------+---------+------------+----------------------------------------------------------------------+ | meta id | post_id | meta_key | meta_value | | 33 | 294 | _post_like | array( 'ip_address' => 192.168.1.1, 'date_modified' => '11-20-2017') | | 34 | 294 | _post_like | array( 'ip_address' => 192.168.1.2, 'date_modified' => '11-20-2017') | | 35 | 294 | _post_like | array( 'ip_address' => 192.168.1.5, 'date_modified' => '11-20-2017') | +---------+---------+------------+----------------------------------------------------------------------+ 

Третий сценарий

 +---------+---------+----------------------+--------------------------------------------------------+ | col1 | col2 | col3 | col4 | +---------+---------+----------------------+--------------------------------------------------------+ | meta id | post_id | meta_key | meta_value | | 33 | 294 | _post_like_count | array( 'count' => 25, 'date_modified' => '11-20-2017') | | 34 | 294 | _post_like_addresses | array( 192.168.1.2, 192.168.1.3, 192.168.1.5) | +---------+---------+----------------------+--------------------------------------------------------+ 

Мой вопрос в том, должен ли я хранить счетчик сообщений в отдельном мета-поле, как показано в первом сценарии, и просто обновлять его каждый раз, когда запись добавляется?

Если я использую этот метод, мне все равно нужно будет прокручивать каждую запись с помощью meta_key user_ip и искать IP-адрес пользователя, чтобы убедиться, что он уже не похож на сообщение.

Или я должен хранить мета-поле с ключом _post_like и ip-адресом и датой в качестве значения, а затем просто запускать запрос, чтобы узнать, сколько записей существует с этим ключом для этого сообщения, и во время выполнения запроса также возвращает IP-адрес?

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

 $count = get_post_meta( $post_id, "_post_like_count" ); // like count single field $count = new WP_Query( array('_post_like' => '%') ); //query to count the number of records with the key for post X 

Это будет в конечном счете использоваться для отображения сообщения в стиле подачи, в котором он работает в цикле, текущий пользователь, если он уже похож на сообщение, не может понравиться снова, поэтому мне всегда нужно отслеживать IP.