Php 是否将自定义帖子类型导出为xml?

Php 是否将自定义帖子类型导出为xml?,php,xml,wordpress,Php,Xml,Wordpress,对于我正在开发的一个网页,我创建了一个插件,用户可以在其中输入各种成员及其信息,我还创建了一个页面模板,将这些成员输出到页面上 这是应该的,但我希望在页面的下面有一个“下载为xml”按钮 所以我试着在我的页面模板中添加 <div class="download_button"> <?php $args = array( 'post_type' => 'members', 'posts_per_page' => -1

对于我正在开发的一个网页,我创建了一个插件,用户可以在其中输入各种成员及其信息,我还创建了一个页面模板,将这些成员输出到页面上

这是应该的,但我希望在页面的下面有一个“下载为xml”按钮

所以我试着在我的页面模板中添加

<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>