2016-11-28 4 views
0

Formstackの投稿を受け取り、WordPress投稿を作成するカスタムプラグインを継承しました。投稿はうまく作成されますが、フォームの内容はpost_contentのシリアル化されたデータとして保存されます。シリアル化されたデータを編集するWordPressダッシュボード

私は、これらの投稿をWPダッシュボード内で編集できるようにしなければなりません。現在、投稿のタイトルをクリックすると、データのみを表示するページが表示されます。データを編集する機能はありません。

functions.phpファイルの「サポート」内でエディタコントロールを有効にすると、エディタにダンプされたシリアル化されたデータを持つエディタが表示されます。

WPの特定の投稿タイプのカスタム編集ページを設定する必要はありませんでした。私にこのことを説明するサイトを案内できる人がいるのですか?私はサークルで走っています。

答えて

0

あなたがDBに保存する前に、その後serialize D、データを変更する前にunserialize Dとなるように、プラグインを変更する必要があります...また

、WPのコア機能を使用してみてください:

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 pluginを使用することです。

次に、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' 

} 

は、このスクリプトを実行するには、単に一時的な新しいページを作成し、そのページのために特別にテンプレートファイルを作成し、そのファイルに上記のコードを入れることができます(その後、ページを参照してください)。

関連する問題