CSV Loader plugin, as any other TheCartPress plugin, allows to be extended, using actions and filters.
In this case, a plugin developer can add more fields to be updated using CSV Loader. Those are the hooks that CSV Loader offers to plugin developers:
- tcp_csvl_option_columns (filter), allows to add more fields to be assigned
- tcp_csv_loader_row (action), allows to process added fields
- tcp_csv_loader_new_post (filter), allows to add more values to the new product (or any other post type)
The best way will be to see an example:
<?php /* Plugin Name: MyPlugin for TheCartPress Plugin URI: http://thecartpress.com/ Description: MyPlugin for TheCartPress Version: 1.0 Author: TheCartPress team Author URI: http://thecartpress.com License: GPL Parent: thecartpress */ /** * This file is part of TheCartPress-MyPlugin. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ // Exit if accessed directly if ( !defined( 'ABSPATH' ) ) exit; if ( ! class_exists( 'MyPluginClass' ) ) { class MyPluginClass { function __construct() { add_action( 'admin_init', array( $this, 'admin_init' ) ); } function admin_init() { add_filter( 'tcp_csvl_option_columns', array( &$this, 'tcp_csvl_option_columns' ), 10, 2 ); add_filter( 'tcp_csv_loader_new_post', array( &$this, 'tcp_csv_loader_new_post' ), 10, 2 ); add_action( 'tcp_csv_loader_row', array( &$this, 'tcp_csv_loader_row' ), 10, 2 ); } function tcp_csvl_option_columns( $options, $col ) { //Adding a new option, With those options CSVLoader will load the drop down lists in the Load Admin panel $options[] = array( 'myplugn_option_id', strtoupper( $col ) == 'MY_PLUGIN_OPTION_TITLE', 'MyPlugin: My Option' ); $options[] = array( 'myplugn_option_id_2', strtoupper( $col ) == 'MY_PLUGIN_OPTION_2_TITLE', 'MyPlugin: My Option 2' ); return $options; } function tcp_csv_loader_new_post( $post, $cols ) { //Nothing to do if the post is created. Do you want to add any value to the default products value? return $post; } function tcp_csv_loader_row( $post_id, $cols ) { //Checks for values //foreach defined column, the functions, checks if it's present in the request data (columns are not ordered) foreach( $cols as $i => $col ) { //Gets the requested columns and tries to join them with the defined columns $col_names = isset( $_REQUEST['col_' . $i] ) ? $_REQUEST['col_' . $i] : array(); if ( is_array( $col_names ) && count( $col_names ) > 0 ) { foreach( $col_names as $col_name ) { if ( 'myplugin_option_id' == $col_name ) { $myplugin_option_id = $col; } elseif ( 'myplugin_option_id_2' == $col_name ) { $myplugin_option_id_2 = $col; } } } } //for each value, set the value to the product if ( isset( $myplugin_option_id ) ) { update_post_meta( $post_id, 'myplugin_option_id', $myplugin_option_id ); } if ( isset( $myplugin_option_id_2 ) ) { update_post_meta( $post_id, 'myplugin_option_id_2', $myplugin_option_id_2 ); } } } new MyPluginClass(); } // class_exists check
And that’s all, enjoy it.