Редактирование сериализованных данных панели инструментов WordPress

Я просто унаследовал пользовательский плагин, который принимает представления Formstack и создает из них посты WordPress. Посты создаются нормально, однако содержимое формы хранится в виде сериализованных данных в post_content.

Мне поручено разрешить редактирование этих сообщений на панели инструментов WP. В настоящее время, когда вы нажимаете на заголовок сообщения, вы получаете страницу, которая просто показывает данные; нет возможности редактировать данные.

Включение элементов управления редактора в «Support» в файле functions.php дает мне редактор с сериализованными данными, только что сброшенными в редакторе.

Мне никогда не приходилось настраивать пользовательские страницы редактирования для определенного типа сообщений в WP. Есть ли кто-нибудь, кто может направить меня на сайт, который объясняет это? Я бегаю кругами.

0

Решение

Вам нужно изменить плагин так, чтобы данные unserialized перед изменением, то serializeперед сохранением в БД …

В качестве альтернативы попробуйте использовать функциональность WP CORE:

0

Другие решения

Вы можете фильтровать контент, прежде чем он будет представлен на экране редактирования администратора.

function my_filter_function_name( $content, $post_id ) {
if(get_post_type($post_id) == 'the_post_type_in_question'){
$serialized_content = $content;
$content_array = unserialize($serialized_content);
// do something with this array to put it in the format you want
// .....
$content = $new_formatted_content;
}
return $content;
}
add_filter( 'content_edit_pre', 'my_filter_function_name', 10, 2 );

Но это не похоже, что это будет очень полезно для вас.

В вашей ситуации я предлагаю вам потратить время на написание сценария для преобразования всех этих сообщений, чтобы все было сохранено как post meta, (сначала создайте пользовательские поля).

Если ваша тема не построена на каком-либо фреймворке, то я думаю, что самый быстрый способ создать настраиваемое поле — это использовать Плагин Advanced Custom Fields.

Затем, когда вы знаете meta_keysВы можете написать этот скрипт. Например.

$posts = get_posts('post_type'=>'the_post_type','posts_per_page'=> -1);

foreach($posts as $post){

$content_array = unserialize($post->post_content);

// how you do the next bit will depend on whether or not this is an associative array. I'm going to assume it is (because it's a little easier :) )

foreach($content_array as $meta_key=>$meta_value){
update_post_meta($post->ID, $meta_key, $meta_value);
}

// just put what you actually want as the post content back into the post content:
wp_update_post(array('ID'=>$post->ID,'post_content'=>$content_array['post_content'])); // assuming the key of the element you want to be the post content is 'post_content'

}

Чтобы запустить этот сценарий, вы можете просто создать временную новую страницу, а затем создать файл шаблона специально для этой страницы и поместить приведенный выше код в этот файл (затем перейдите на страницу).

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector