Intereting Posts
Содержимое по умолчанию для нового сайта на нескольких сайтах Плагин не появляется после загрузки через FTP Как удалить все существующие трекбэки? Отправить уведомление в WordPress Theme Проблема с получением элементов WP Gallery В cpt-single.php В качестве вложений Имеете разное содержимое боковой панели для МНОГИХ страниц? Отображение дочерних страниц в зависимости от возможностей пользователя (роли) Переключение меню при вызове через PHP Могу ли я / Должен ли я использовать WordPress в качестве CMS для моего приложения Flash Как показать постоянную ссылку auto при вводе текста в пост tiltle? Высокое управление трафиком в WP Отображать iframe или встроенные сообщения на главной странице Разрешить статическую страницу показывать на странице динамического домашнего блога до сообщений WordPress: добавьте пользовательский add_filter для пользовательских функций Как отобразить загрузчик / менеджер медиафайлов WordPress на интерфейсе?

Вставка сообщения Meta из SQL

Я пытаюсь получить метаданные, которые нужно обновить / заменить на $ wpdb и столкнуться с проблемами. У меня есть рабочий SQL, но я не могу заставить его работать при кодировании моего WP плагина.

Дополнительное примечание:

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

Вот мой рабочий SQL. Когда я помещаю это в PHPmyAdmin, он обновляет все метаданные:

INSERT INTO wp_postmeta (post_id, meta_key, meta_value) SELECT wp_posts.ID, 'agency_details_seo_grade', 'test' FROM wp_posts WHERE wp_posts.post_status = 'publish' and wp_posts.post_type = 'agencies'"; 

Вот моя неудачная попытка поместить ее в WP. В результате ничего не произошло (метаданные не изменились и сообщение об ошибке):

 // Failed attempt to put into functions.php function add_grading_post_meta() { global $wpdb; $wpdb->prepare("SELECT ID,'','test2'", $wpdb->query("INSERT INTO wp_postmeta ($post_id,meta_key,meta_value)")); } 

Я пытаюсь получить эту работу, поэтому я могу использовать ее с wp_cron перед следующим шагом использования ее с функциями планирования WP. Любая помощь была бы оценена для этого первого шага, взломав много часов на этом проекте, изучая PHP.

Редактировать:

Вот еще одна версия, которую я пробовал без успеха. Я изменил его из-за комментария @czerspalace, кодирования, предоставленного старой почтой Stack Exchange.

 function add_grading_post_meta() { global $wpdb; $twitter_followers = 'agency_details_twitter_followers'; $twitter_count = 'test3'; $sql = "INSERT INTO $wpdb->wp_postmeta (post_id,meta_key,meta_value) VALUES (%d,'%s',%s) ON DUPLICATE KEY UPDATE meta_value = %s"; $sql = $wpdb->prepare($sql,$post_id,$twitter_followers,$twitter_count); $wpdb->query($sql); } 

На самом деле, обычным способом сделать это в WordPress было бы использовать <?php update_post_meta($post_id, $meta_key, $meta_value, $prev_value); ?> <?php update_post_meta($post_id, $meta_key, $meta_value, $prev_value); ?> в соответствии с кодом: https://codex.wordpress.org/Function_Reference/update_post_meta . Это дает более короткий код, и цель кода более ясна.

Ваше использование $wpdb->prepare очень сильно нарушено. Я честно даже не знаю, какой именно запрос вы пытаетесь получить. Код настолько сломан, что я даже не могу сделать вывод о том, что вы пытаетесь сделать. Тем не менее, я предполагаю, что вы хотите что-то вроде этого:

 $post_id = 1; $key = 'abc'; $value = 'def'; $qry = "INSERT INTO wp_postmeta (post_id,meta_key,meta_value) VALUES (%d,%s,%s)"; $qry = $wpdb->prepare( $qry, $post_id, $key, $value ); var_dump($qry); $wpdb->query($qry); 

Обратите внимание, что происходит. Вы создаете строку «format» с заполнителями для динамических данных. Затем вы передаете это, prepare вместе с заменяющими строками для заполнителей и верните строку, отправленную по query .