2017-05-22 3 views
2

私はうまくいけば解決できる可能性のある少しの状況に遭遇しました。私の目標は、サーバーから既存のXMLファイルを取り出し、それを解析してWordpressのオリジナルのWYSIWYGエディタにリストとして注入して、サイトの所有者が新しい投稿を書くときにすぐに利用できるリストを持つようにすることです。今、私は私のwp-adminの/編集しておくと、ファイルにこのコードを持っている:それは動作しますがWordpressへのXMLの解析WYSIWYGエディタのみ投稿用

/** 
* Fires after the title field. 
* 
* @since 3.5.0 
* 
* @param WP_Post $post Post object. 
*/ 
do_action('edit_form_after_title', $post); 

if (post_type_supports($post_type, 'editor')) { 
?> 
<div id="postdivrich" class="postarea<?php if ($_wp_editor_expand) { echo ' wp-editor-expand'; } ?>"> 
<?php 

/** LOAD XML FROM SERVER AND PARSE AS UL INTO EACH NEW WP POST **/ 
    $xml = simplexml_load_file('../my-folder/file.xml'); 

    $product = "<br/><br/><h2 style='text-align:center; color:#003300;'><u>Products Available Now</u></h2><br/><ul style='text-align:center; list-style:none; color:#003300;'>"; 
    foreach($xml as $value) { 
      $product .= "<li>"; 
      $product .= $value->Description .= " $"; 
      $product .= $value->Price .= "/"; 
      $product .= $value->QtyUnit .= "\n"; 
      $product .= "</li>"; 
     }; 
?> 


<?php wp_editor($product, 'content', array(
    '_content_editor_dfw' => $_content_editor_dfw, 
    'drag_drop_upload' => true, 
    'tabfocus_elements' => 'content-html,save-post', 
    'editor_height' => 300, 
    'tinymce' => array(
     'resize' => false, 
     'wp_autoresize_on' => $_wp_editor_expand, 
     'add_unload_trigger' => false, 
    ), 
)); ?> 

、これは夫婦の問題を引き起こします。

1)私は避けたいページを含め、 WYSIWYGエディタごとにデータをに挿入します。可能であれば、投稿編集者にのみコンテンツを表示してください。

2)これは、特定の管理ページが再ロードされるたびにリスト以外のものを消去するかなり重大なバグを引き起こします。下書きを保存したり、編集中にそのセッションをブラウザで開いていない限り、投稿やページを編集することはできません。

これらの問題を解決できるかどうかはわかりませんが、すべてのヘルプは心から感謝しています。

答えて

2

never modify WP core filesです。元のファイルupdate or restoreをお勧めします。

<?php 
/** 
* Plugin Name: Default Post Content 
*/ 

add_action('load-post-new.php', 'new_post_so_44123076'); 

function new_post_so_44123076() { 
    # Only load if post type not defined (only occurs for Posts) 
    if(isset($_GET['post_type'])) 
     return; 
    add_filter('default_content', 'default_content_so_44123076'); 
} 
function default_content_so_44123076($content) { 
    # Build your own custom content 
    $content = "My html content."; 
    return $content; 
} 

は、プラグインのフォルダを作成したファイル(custom-content.php)内のコードを入れて、同じフォルダにXMLを置く:あなたはこの小さなプラグインを用いて達成することができる必要がある何

このように取得することができます:

$xml = plugins_url('/file.xml', __FILE__); 
+1

これは美しく働いた、どうもありがとうございました!私は元のファイルを復元し、プラグインのコードをパーソナライズしました。サーバー上の特定のフォルダーにある必要があるため、XMLファイルへの絶対パスを指定します。本当に助けに感謝! –

関連する問題