在编辑器中查看上载文件中的内容

时间:2014-08-18 作者:Interactive

我有一个自定义元数据库,让用户上传。创建页面时的csv文件。的内容。csv显示在创建的页面的“前端”。

我想在所见即所得编辑器的管理页面上显示内容,以便用户可以在必要时进行更改。有人能告诉我如何查看上传文件的内容吗?

我真的不认为有必要将代码上传到metabox和upload函数,但如果有人想要,请告诉我。

M

2 个回复
SO网友:Interactive

可以我真的在这里失去了它。

我只是想把它全部提取出来,这样可能会更清楚。

在我的功能中。php:

function jj_readcsv($filename, $header=false) {
$handle = fopen($filename, "r");
echo \'<table style="width:100%;">\';
//display header row if true
if ($header) {
$csvcontents = fgetcsv($handle);
echo \'<tr>\';
foreach ($csvcontents as $headercolumn) {
    echo "<th>$headercolumn</th>";
}
echo \'</tr>\';
}
// displaying contents
while ($csvcontents = fgetcsv($handle)) {
echo \'<tr>\';
foreach ($csvcontents as $column) {
    echo "<td>$column</td>";
}
echo \'</tr>\';
}
echo \'</table>\';
fclose($handle);
}
这个函数从数据库中读取上传的文件,并将其输出到一个漂亮的表中。

这是将文件上载到服务器的自定义元数据库。

<?php 
function add_meta_box_csv() {

// Define the custom attachment for pages
add_meta_box(
    \'meta_box_csv\',
    \'Upload csv\',
    \'meta_box_csv\',
    \'page\',
    \'normal\'
);

} // end add_meta_box_csv
add_action(\'add_meta_boxes\', \'add_meta_box_csv\');

function meta_box_csv() {
$file = get_post_meta(get_the_ID(), \'meta_box_csv\', true);
wp_nonce_field(plugin_basename(__FILE__), \'meta_box_csv_nonce\');

$html = \'<p class="description">\';
$html .= \'Selecteer een .csv bestand.\';
$html .= \'</p>\';
echo $html;  
printf( \'<p><input type="file" name="meta_box_csv" value="\'.$file[\'file\'].\'" size="15" /></p>\' );


$content = jj_readcsv($file[\'file\'],true);
//$editor_id = \'mycustomeditor\';

//wp_editor( $content, $editor_id );
//$csv = array_map(\'str_getcsv\', file(\'data.csv\'));




} // end meta_box_csv

function save_custom_meta_data($id) {

/* --- security verification --- */
if(!wp_verify_nonce($_POST[\'meta_box_csv_nonce\'], plugin_basename(__FILE__))) {
  return $id;
} // end if

if(defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE) {
  return $id;
} // end if

if(\'page\' == $_POST[\'post_type\']) {
  if(!current_user_can(\'edit_page\', $id)) {
    return $id;
  } // end if
} else {
    if(!current_user_can(\'edit_page\', $id)) {
        return $id;
    } // end if
} // end if
/* - end security verification - */

// Make sure the file array isn\'t empty
if(!empty($_FILES[\'meta_box_csv\'][\'name\'])) {

    // Setup the array of supported file types. In this case, it\'s just PDF.
    $supported_types = array(\'text/csv\');
    //$supported_types = array(\'text/comma-separated-values\');

    // Get the file type of the upload
    $arr_file_type = wp_check_filetype(basename($_FILES[\'meta_box_csv\'][\'name\']));
    $uploaded_type = $arr_file_type[\'type\'];

    // Check if the type is supported. If not, throw an error.
    if(in_array($uploaded_type, $supported_types)) {

        // Use the WordPress API to upload the file
        $upload = wp_upload_bits($_FILES[\'meta_box_csv\'][\'name\'], null, file_get_contents($_FILES[\'meta_box_csv\'][\'tmp_name\']));

        if(isset($upload[\'error\']) && $upload[\'error\'] != 0) {
            wp_die(\'Er is een fout ontstaan bij het uploaden: \' . $upload[\'error\']);
        } else {
            add_post_meta($id, \'meta_box_csv\', $upload);
            update_post_meta($id, \'meta_box_csv\', $upload);    
        } // end if/else

    } else {
        wp_die("Dit is geen .csv bestand");
    } // end if/else

  } // end if

} // end save_custom_meta_data
add_action(\'save_post\', \'save_custom_meta_data\');


function update_edit_form() {
echo \' enctype="multipart/form-data"\';
} // end update_edit_form
add_action(\'post_edit_form_tag\', \'update_edit_form\');
?>
我可以在我的metabox中输出上传csv的内容。问题是我想在wp\\U编辑器框中输出csv的内容,但要做到这一点,我需要有一个包含数据的字符串。

有没有办法存储的输出数据function jj_readcsv() 在字符串变量中,以便我可以使用它输出?

考虑到@TomJNowell所说的:我不能将其视为纯文本文件。

我希望任何人都能理解我的痛苦,并能帮助我走出困境!

非常感谢。M

-编辑好了,开始工作了。Thnx收件人:https://stackoverflow.com/users/803518/jlevett用他的决心:https://stackoverflow.com/a/6675199/3115317他给了我这个:

ob_start();
jj_readcsv($file[\'file\'],true);
$link = ob_get_contents();
ob_end_clean();
$editor_id = \'my_uploaded_csv\';

wp_editor( $link, $editor_id );
而且很有魅力。

SO网友:Interactive

好了,我们又来了
现在我已经有了代码,并且内容显示在编辑器中,我想将内容保存到帖子中。

内容是从上传的中提取的。csv文件,这是我唯一保存的数据。我想把数据保存在数据库里。

上传功能似乎不起作用。以下是我所做的但运气不佳的事情:

ob_start();
jj_readcsv($file[\'file\'],true);
$link = ob_get_contents();
ob_end_clean();
$editor_id = \'my_uploaded_csv\';

wp_editor( $link, $editor_id );
在这里,我从上传的内容。csv并将其显示在wp\\U编辑器中进行编辑
这是保存功能:

function save_wp_editor_fields( $post_id ) {

if( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE ) return;

if( !current_user_can( \'edit_post\' ) ) return;

if( isset( $_POST[\'save_wp_editor_fields\'] ) )
    update_post_meta( $post_id, \'save_wp_editor_fields\' ) );
}

add_action( \'save_post\', \'save_wp_editor_fields\' );
我哪里出错了?M

结束