Запретить обновление определенного настраиваемого поля плагина при обновлении сообщения - WordPressPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Запретить обновление определенного настраиваемого поля плагина при обновлении сообщения - WordPress

Сообщение Anonymous »

Я использую специальный плагин для подсчета просмотров сообщений.
Он хранится в настраиваемом поле postmeta с именем «попадание» на значение, и это значение обновляется в реальном времени. p>
Я только что заметил, что когда я как администратор редактирую сообщение, значение «обращений» не увеличивается во время редактирования сообщения.
Когда я думаю об этом, это кажется логичным, потому что при «попадании» значение равно 15, когда я вхожу. в пост-издании, когда я закончу пост-редакцию, он все равно будет 15, потому что все пост-мета обновляются, когда я обновляю пост. ТАК, даже если мое сообщение посетит еще 10 человек, мой счетчик сообщений по-прежнему будет отображать значение 15, хотя должно показывать 25.
Итак, теперь я очень стараюсь с моим низким навыком PHP запретить обновление этого поля, пока я обновляю свои сообщения.
Я пробовал другой метод, но ни один из них не помог:
  • Я пытался предотвратить обновление этой метадаты перед сохранением сообщения с помощью следующего кода :

Код: Выделить всё

function exclude_hits_from_update($null, $object_id, $meta_key, $meta_value) {
if ('hits' === $meta_key) {
return true;
}
return $null;
}
add_filter('pre_update_post_meta', 'exclude_hits_from_update', 10, 4);
  • Я также попробовал этот код, чтобы попытаться получить значение метадаты непосредственно перед обновлением сообщения, но он тоже не сработал. (похоже, что это просто создает дополнительное поле с именем «обращения»):

Код: Выделить всё

function prevent_hits_field_update( $post_id, $post, $update ) {

if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) {
return;
}
if ( isset($_POST['hits']) ) {
$current_hits = get_post_meta($post_id, 'hits', true);
update_post_meta($post_id, 'hits', $current_hits);
}
}
add_action('save_post', 'prevent_hits_field_update', 10, 3);
  • Я также пытался напрямую изменить функцию save_post в самом плагине (комментируя строку "update_post_meta", но я знаю, что это не так) достаточно :

Код: Выделить всё

public function adminSave( $post_id )
{
// skip for autosave
if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
{
return;
}

// update hits count
if( isset($_POST['post_type']) && in_array( $_POST['post_type'], array( 'post', 'page' ) ) )
{
$hits = ( isset($_POST['hits']) && !empty($_POST['hits']) ? intval( preg_replace( '/[^0-9]/', '', $_POST['hits'] ) ) : 0 );

if( $hits > 0 )
{
$hits_exists = get_post_meta( $post_id, 'hits', true );

if( $hits_exists===false )
{
add_post_meta( $post_id, 'hits', $hits, true );
}
else
{
/*update_post_meta( $post_id, 'hits', $hits );*/ /* HERE */
}
}
}

// clear Popular Posts Widget
$ahc_ppw = new AJAX_Hits_Counter_Popular_Posts_Widget();
$ahc_ppw->clearCache();

return true;
}
Может ли кто-нибудь мне с этим помочь? К сожалению, я пока не могу изменить плагин, поскольку он связан с несколькими блоками на моем веб-сайте и использует некоторые эффективные методы кэширования.
Заранее спасибо за любую помощь!
Джонатан< /п>

Подробнее здесь: https://stackoverflow.com/questions/791 ... t-wordpres
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»