Php 是否将自定义帖子类型导出为xml?
对于我正在开发的一个网页,我创建了一个插件,用户可以在其中输入各种成员及其信息,我还创建了一个页面模板,将这些成员输出到页面上 这是应该的,但我希望在页面的下面有一个“下载为xml”按钮 所以我试着在我的页面模板中添加Php 是否将自定义帖子类型导出为xml?,php,xml,wordpress,Php,Xml,Wordpress,对于我正在开发的一个网页,我创建了一个插件,用户可以在其中输入各种成员及其信息,我还创建了一个页面模板,将这些成员输出到页面上 这是应该的,但我希望在页面的下面有一个“下载为xml”按钮 所以我试着在我的页面模板中添加 <div class="download_button"> <?php $args = array( 'post_type' => 'members', 'posts_per_page' => -1
<div class="download_button">
<?php
$args = array(
'post_type' => 'members',
'posts_per_page' => -1,
'order' => 'ASC',
);
$loop = new WP_Query( $args );
$out_array = array();
while ( $loop->have_posts() ) : $loop->the_post();
$post_meta = get_post_meta($post->ID);
$mail_array = explode(', ', $post_meta['Members_contact_mail'][0]);
$email = array();
if (is_array($mail_array)) {
foreach ($mail_array as $key) {
$email[] = $key;
}
}
$phone_array = explode(', ', $post_meta['Members_contact_phone'][0]);
$phone = array();
if (is_array($phone_array)) {
foreach ($phone_array as $key_phone) {
$phone[] = $key_phone;
}
}
$title = get_the_title();
$out_array[] = array(
$title,
$post_meta['Members_address'][0],
$post_meta['Members_person_in_charge'][0],
$post_meta['Members_entry_date'][0],
$phone,
$email,
$post_meta['Members_oib'][0]
);
endwhile;
$phpexcel = new Excel_Xml;
$phpexcel->addWorksheet('members', $out_array);
// $phpexcel->sendWorkbook('members.xls');
?>
<a href="<?php echo esc_url( $phpexcel->getWorkbook() );?>" download=""><i class="bm-download"></i> <?php esc_html_e('members.xml', 'theme') ?></a>
</div>
在我的download\u按钮中
div我将实际获取xml文件,因此我可以看到这是可行的。但那不是我需要的。我试过使用excel\uxml.php
文件中的其他函数,但都不起作用
有没有人有这方面的经验
解决方案:
这似乎有效:
$phpexcel = new Excel_Xml;
$phpexcel->addWorksheet('members', $out_array);
$phpexcel->writeWorkbook('members.xls');
?>
<a class="member_download" href="<?php echo home_url(); ?>members.xls" target="_blank"><i class="bm-download"></i> <?php esc_html_e('members.xls', 'theme') ?></a>
$phpexcel=new Excel\u Xml;
$phpexcel->addWorksheet('members',$out\u数组);
$phpexcel->writeWorkbook('members.xls');
?>
当您输入页面时,
.xls
文件将保存到根文件夹中。当你点击按钮时,它会下载文件。如果你知道创建它的文件路径,那么只要链接到生成的文件,文件就会自动下载。是的,我刚刚算出来,它会将工作簿保存在根文件夹中。有没有办法让我点击这个按钮而不是在页面重新加载时生成文件?我不知道为什么你的页面会重新加载,但是如果你直接链接到目标为空的文件,那么一个新窗口将路由到链接的页面并自动下载。您的链接必须类似于$fileUrl=site_url('/')。$filename;回声'代码>我的意思是,我用FTP定位了文件,并将其删除(以查看文件何时被创建),当我刷新页面时,文件被创建,这有点不必要,不是吗?我的意思是文件本身并没有那么大(~40KB),但如果我按一下按钮创建文件的话还是很酷的。尽管我必须为此进行AJAX调用(加上加载带有正确文件的href)。我会像你建议的那样把链接放进去代码>尝试此项检查文件是否正在创建而不重新加载?如果您知道创建文件的路径,则只需链接到生成的文件,文件就会自动下载。是的,我刚刚算出来,它会将工作簿保存在根文件夹中。有没有办法让我点击这个按钮而不是在页面重新加载时生成文件?我不知道为什么你的页面会重新加载,但是如果你直接链接到目标为空的文件,那么一个新窗口将路由到链接的页面并自动下载。您的链接必须类似于$fileUrl=site_url('/')。$filename;回声'代码>我的意思是,我用FTP定位了文件,并将其删除(以查看文件何时被创建),当我刷新页面时,文件被创建,这有点不必要,不是吗?我的意思是文件本身并没有那么大(~40KB),但如果我按一下按钮创建文件的话还是很酷的。尽管我必须为此进行AJAX调用(加上加载带有正确文件的href)。我会像你建议的那样把链接放进去代码>尝试此项检查文件是否正在创建而不重新加载?
$phpexcel = new Excel_Xml;
$phpexcel->addWorksheet('members', $out_array);
$phpexcel->writeWorkbook('members.xls');
?>
<a class="member_download" href="<?php echo home_url(); ?>members.xls" target="_blank"><i class="bm-download"></i> <?php esc_html_e('members.xls', 'theme') ?></a>