WordPress插件-将字符串数据导出到可下载的txt fie

时间:2019-03-10 00:49:39

标签: php wordpress

我正在创建的新WordPress插件的一部分是,我希望可以选择下载一个txt文件,该文件包含来自基本字符串值的数据。

此特定部分的功能是:

function get_page_links()
	{
		$pages = get_pages( 'post_status=publish' );
		foreach ( $pages as $page )
			{
				$pagetitle = $page->post_title;
				$pagelink = get_permalink( $page->ID );
				echo "{$pagetitle}";
				echo "\n";
				echo "{$pagelink}";
			}
	}

我想生成一个txt文件,并将{$ pagelink}字符串添加到txt文件中(在循环中获取字符串中的所有页面链接),然后将其下载。

我尝试将以下代码添加到该函数中,但它似乎根本没有做任何事情...

    $file = 'file.txt';
    $data = '{$pagelink}';
    file_put_contents($file, $data);

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

file_put_contents将创建一个文件(如果不存在),然后将内容写入其中,而不是附加内容,仅此而已。在循环中调用它会导致它不断覆盖您编写的链接,直到循环结束为止,最后您只会得到文件中的最后一个链接。

以下代码将所有链接写入文件,每行一个链接。再次调用此函数将仍然覆盖所有链接的文件,因此,如果您删除了页面或创建了新页面,它将更新。

function get_page_links()
{
        $pages = get_pages( 'post_status=publish' );
        // use the code below if your making a plugin
        // this will be found on:
        // path/to/yourplugin/links.txt
        $file = plugin_dir_path(__FILE__) . 'links.txt';

        // use the code below if you're making a theme
        // this will be found on:
        // path/to/yourtheme/links.txt
        // $file = get_template_directory() . '/links.txt' 

        $n_handle_file = fopen($file,'w');
        foreach ( $pages as $page )
            {
                $pagetitle = $page->post_title;
                $pagelink = get_permalink( $page->ID );
                echo "{$pagetitle}";
                echo "\n";
                echo "{$pagelink}";
                fprintf($n_handle_file, "%s\n", $pagelink);
            }
         fclose($n_handle_file);
    }

答案 1 :(得分:0)

从您的代码看来: 1)循环中的以下行未附加到$ pagelink的先前值    $ pagelink = get_permalink($ page-> ID);    它应该更改为    $ pagelink。= get_permalink($ page-> ID); 2)否则可能存在文件写入权限问题    尝试换线    $ file ='file.txt';至    $ file = plugin_dir_path(文件)。 'file.txt';

请分享完整代码