Jovian

Рейтинг
78
Регистрация
21.08.2011
Dosker:
Небольшая, если они не будут CTRL+F5 нажимать каждую секунду и сидеть на сайте 24 часа в сутки

Поэтому относительной величиной нагрузки надо использовать не "количество юзеров", а "количество хитов" (хит = hit = click = клик = загрузка какой-либо страницы).

Это замечание для новичков, читающих тут. ;)

SeVlad:
а если "да"? (я же говорил про обновление. Что тебе вроде бы и надо было решить)

Не, я просто пытался разобраться, почему пример с сайта ВП не пашет нормально. ;)

Оказалось, что update_post_meta возвращает false не только, когда ключа нет, но и тогда, когда ключ и значение полностью совпадают с записываемыми -- вот здесь и оказалась загвоздка. ;) Просто это было не указано на странице описания примера.

SeVlad:
Jovian, я ж вроде тоже самое показывал у Тимура. Просто я ж с аглицким не дружу, а у него по-русски. Конечно, бывают ошибки, но...

А я неплохо знаю инглиш, и стараюсь юзать только первоисточники, коим, в данном случае, является wordpress.org. ;)

Тимур, безусловно, молодец, но я предпочитаю инглиш.

Усё, разобрались.

SeVlad, ну смотри, update_post_met должна вернуть true, если найдёт ключ + значение равное 'fruit' и 'banana' соответственно. Это проверяется выражением:

if ( update_post_meta (7, 'fruit', 'banana' ) )

Верно?

Теперь обратный if с добавлением восклицательного знака -- будет работать от обратного, если false:

if ( ! update_post_meta (7, 'fruit', 'banana' ) )

Верно? :)

И добавляем add_post_meta, если update_post_meta в нашем if получился false:

if ( ! update_post_meta (7, 'fruit', 'banana' ) ) add_post_meta( 7, 'fruit', 'banana' );

Вроде, правильно, ан не работает! :) У меня оно продолжает добавлять дубликаты ключа+значения. :)

---------- Добавлено 25.09.2013 в 12:47 ----------

SeVlad:
В примере из кодекса обновляет update_post_meta, а не add_post_meta.

Нет, не обновляет, а с помощью вызова update_post_meta оно проверяет, если такая пара key+value уже, и, если нет, должно добавить с помощью add_post_meta. ;)

То есть, фактически получается, что не работает пример полностью скопипастенный с Кодекса ВП. 🍿

---------- Добавлено 25.09.2013 в 13:01 ----------

Черт возьми! Вот, собственно, и ответ, почему оно так происходит:

update_post_meta

Return Values
(mixed)
Returns meta_id if the meta doesn't exist, otherwise returns true on success and false on failure. NOTE: If the meta_value passed to this function is the same as the value that is already in the database, this function returns false.

Спрашивается, почему эти крендели не указали это примечание в примере на странице с add_post_meta:

Adding or Updating a Unique Custom Field
Adds a new custom field if the key does not already exist, or updates the value of the custom field with that key otherwise.

<?php add_post_meta( 7, 'fruit', 'banana', true ) || update_post_meta( 7, 'fruit', 'banana' ); ?>
The following will have the same effect:

<?php if ( ! update_post_meta (7, 'fruit', 'banana' ) ) add_post_meta( 7, 'fruit', 'banana' ); ?>
metaller92:
А зачем в ф-ции $(this) в переменную совать? Для красоты или удобства?)

Скорость.

http://stackoverflow.com/questions/14249852/why-assign-this-to-a-var

http://stackoverflow.com/questions/5724400/does-using-this-instead-of-this-provide-a-performance-enhancement

SeVlad, нет. ;)

update_post_meta возвращает true, если есть такие key + value. В том-то и дело. Цитата с сайта WP:

Adding or Updating a Unique Custom Field
Adds a new custom field if the key does not already exist, or updates the value of the custom field with that key otherwise.

<?php add_post_meta( 7, 'fruit', 'banana', true ) || update_post_meta( 7, 'fruit', 'banana' ); ?>
The following will have the same effect:

<?php if ( ! update_post_meta (7, 'fruit', 'banana' ) ) add_post_meta( 7, 'fruit', 'banana' ); ?>

У меня же оно упорно пишет НОВЫЙ такой же key + value в БД. Фигня какая-то. :)

vandamme, но согласитесь, что отдавать ботам одно, а юзерам другое -- ничто иное, как разновидность клоакинга. С этим нужно быть предельно осторожным. ;)

И вам бы надо добавить сниппет для юзающих Nginx...

Начнём "засерать" новую тему. :)

Итак, есть в Кодексе WP такой пример для update_post_meta:

<?php if ( ! update_post_meta (7, 'fruit', 'banana' ) ) add_post_meta( 7, 'fruit', 'banana' ); ?>

Копи-пастю его в свою функцию, хукающуюся на save_post, изменив только нужный мне ID.

Итог: вместо того, чтобы обновить поле, если оно существует, этот код тупо добавляет дубликаты в БД.

Что за ерунда, друзья? Я что-то упустил из виду? Можете проверить у себя?

п.с.: WP 3.6.

metaller92,

var find_block_info_benefit = parseInt($('.sort-procent').text());

А чего это со всех блоков парсится? :)

Надо парсить $(this).find('.sort-prcent').text()

И если часто юзаете $(this) в функции, то лучше его загнать в переменную: var this = $(this)

п.с.: и ещё раз, указывайте формат - parseInt($('.sort-procent').text(), 10)

п.п.с.: неплохой дизайн сайта. ;) вот только структура ХТМЛ чересчур облагорожена кучей тегов и классов. ;)

vandamme, безусловно. Просто нужно понимать, что есть некие нюансы, которые, гипотетически, могут весьма серьёзно аукнуться.

В вашей теме есть ссылочка на англоязычный ресурс, которому аукнулось.

В общем, понимать надо.

metaller92:
Может в скайпе спишемся? Так думаю будет удобней, да и хочется иметь товарища по интересам что-ли
Если согласитесь мой скайп metallist132

Я не пользуюсь скайпами и прочим, а также терпеть не могу всякие твитеры-шмитеры. Асоциальный, в общем. ;)

Но помочь, если смогу и не лениво -- могу. :)

Так что давайте сюда весь код.

Всего: 730