How To Export Posts To CSV In WordPress
Add Custom Button On The Post Listing
To generate the CSV, we first need to give a button on the listing page of a post screen. On the click of this button, we will write a code for generating a CSV.
Open your
functions.phpfile and place the below code in it.
12345678910add_action('manage_posts_extra_tablenav','admin_post_list_top_export_button', 20, 1 );functionadmin_post_list_top_export_button($which) {global$typenow;if('post'===$typenow&&'top'===$which) {?><input type="submit"name="export_all_posts"id="export_all_posts"class="button button-primary"value="Export All Posts"/><?php}}Above code add the button ‘Export All Posts’ on the posts listing as shown in the screenshot. Here, we have used the hook manage_posts_extra_tablenav to place our custom button on post screen page.
Actual Code Which Export Posts To CSV
At this stage, you are ready with your custom button which should generate our CSV. So, let’s add a code that generates the CSV on the click of a button and send it to the browser for download.
Add the below code in the
functions.phpfile.
12345678910111213141516171819202122232425262728293031add_action('init','func_export_all_posts');functionfunc_export_all_posts() {if(isset($_GET['export_all_posts'])) {$arg=array('post_type'=>'post','post_status'=>'publish','posts_per_page'=> -1,);global$post;$arr_post= get_posts($arg);if($arr_post) {header('Content-type: text/csv');header('Content-Disposition: attachment; filename="wp.csv"');header('Pragma: no-cache');header('Expires: 0');$file=fopen('<a style="box-sizing: content-box !important; border: 0px !important; font-family: Monaco, consolas, 'bitstream vera sans mono', 'courier new', Courier, monospace !important; font-size: 1em !important; font-style: normal !important; font-weight: 400 !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; background: 0px 0px !important; color: blue !important; text-decoration: none; transition: all 0.2s linear 0s; border-radius: 0px !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; right: auto !important; text-align: left !important; top: auto !important; width: auto !important; direction: ltr !important; box-shadow: none !important;" href="php://output/">php://output</a>','w');fputcsv($file,array('Post Title','URL'));foreach($arr_postas$post) {setup_postdata($post);fputcsv($file,array(get_the_title(), get_the_permalink()));}exit();}}}
source:
$link[host]
Read Original Source
