У меня проблема с wp_insert_post.
Когда я пытаюсь вставить свой пост, post_content по сути появляется как просто пробелы. Я даже зашел в MySQL, чтобы подтвердить. Все остальное, post_title, post_excerpt и т. Д. Появляется просто отлично.
Я сделал print_r ($ this-> postData). Перед тем, как передать это на wp_insert_post, просто убедитесь, что он не пуст и имеются правильные данные.
Содержимое данных
<object> ... </object>
Это будет проблемой?
Вот мой код, который создает переменную $ this-> postData, которая передается в wp_insert_post.
$this->postData = array( 'post_content' => $this->jsonData['data'], 'post_title' => $this->jsonData['title'], 'post_excerpt' => $this->jsonData['description'], 'tags_input' => $this->jsonData['tags'], 'post_date' => date('Ymd H:i:s'), 'post_status' => 'publish', 'post_author' => 1, 'post_date_gmt' => date('Ymd H:i:s'), );
заранее спасибо!
ОК, так это то, что я узнал, данные
<object>...</object>
был виновником. WordPress дезактивирует входные данные перед тем, как поступить в базу данных. Другие недопустимые теги включают
<embed>...</embed>
Я видел это решение онлайн
$postData = array( ... 'filter'=>true ... );
Однако некоторые люди говорят, что это недостаток безопасности. Я вырыл немного глубже, и я считаю, что лучший метод, который я узнал, выглядит следующим образом:
kses_remove_filters(); $id = wp_insert_post($postData); kses_init_filters();
Без настройки
'filter' => true,
Надеюсь, это поможет всем! 🙂