flush_rules();
}
?>
Managing custom fields for hundreds or thousands of posts can be tedious and daunting! Airpress Virtual Fields allow you to automatically retrieve Airtable records for each post/page/etc by specifying a Wordpress field (such as ID or post_name) and an Airtable table and field.
$config):
$class = ($active_tab == $key)? 'nav-tab-active' : '';
?>
+
"New Configuration");
// $configs[] = $config;
// $active_tab = count($configs)-1;
// set_airpress_config("airpress_vf",$active_tab,$config);
// } else {
// $active_tab = $requested_tab;
// }
// $_GET['tab'] = $active_tab;
// foreach($configs as $key => $config){
// airpress_admin_vf_tab($key,$config);
// }
// }
// add_action( 'admin_init', 'airpress_admin_vf_tab_controller');
/***********************************************/
# TAB: DEFAULT
/***********************************************/
function airpress_admin_vf_tab($key,$config) {
$option_name = "airpress_vf".$key;
//$options = get_option( $option_name );
$defaults = array(
"name" => "New Configuration",
"connection" => null,
"post_type" => null,
"table" => "Your Airtable Table",
"column" => "Your Airtable Column",
"field" => "Your Wordpress Field",
"single" => 0
);
$options = array_merge($defaults,$config);
################################
################################
$section_title = "Virtual Fields";
$section_name = "airpress_vf".$key;
add_settings_section(
$section_name,
__( $section_title, 'airpress' ),
"airpress_admin_vf_render_section",
$option_name
);
################################
$field_name = "name";
$field_title = "Configuration Name";
add_settings_field( $field_name, __( $field_title, 'airpress' ), 'airpress_admin_vf_render_element_text', $option_name, $section_name, array($options,$option_name,$field_name) );
################################
$field_name = "connection";
$field_title = "Select Connection";
add_settings_field( $field_name, __( $field_title, 'airpress' ), 'airpress_admin_vf_render_element_select_connections', $option_name, $section_name, array($options,$option_name,$field_name) );
################################
################################
$section_title = "";
$section_name = "airpress_vf".$key;
$option_name = 'airpress_vf'.$key;
add_settings_section(
$section_name,
__( $section_title, 'airpress' ),
"airpress_admin_vf_render_section",
$option_name
);
################################
$field_name = "post_type";
$field_title = "Select Post Type";
add_settings_field( $field_name, __( $field_title, 'airpress' ), 'airpress_admin_vf_render_element_select__posttypes', $option_name, $section_name, array($options,$option_name,$field_name) );
################################
$field_name = "table";
$field_title = "Airtable Table Name";
add_settings_field( $field_name, __( $field_title, 'airpress' ), 'airpress_admin_vf_render_element_text', $option_name, $section_name, array($options,$option_name,$field_name) );
################################
$field_name = "column";
$field_title = "Airtable Column";
add_settings_field( $field_name, __( $field_title, 'airpress' ), 'airpress_admin_vf_render_element_text', $option_name, $section_name, array($options,$option_name,$field_name) );
################################
$field_name = "field";
$field_title = "Wordpress Field (ID or post_name)";
add_settings_field( $field_name, __( $field_title, 'airpress' ), 'airpress_admin_vf_render_element_text', $option_name, $section_name, array($options,$option_name,$field_name) );
################################
$field_name = "single";
$field_title = "Enable only for single posts (not archive, search, etc)";
add_settings_field( $field_name, __( $field_title, 'airpress' ), 'airpress_admin_vf_render_element_toggle', $option_name, $section_name, array($options,$option_name,$field_name) );
###############################
$field_name = "delete";
$field_title = "Delete Configuration?";
add_settings_field( $field_name, __( $field_title, 'airpress' ), 'airpress_admin_vf_render_element_delete', $option_name, $section_name, array($options,$option_name,$field_name) );
register_setting($option_name,$option_name,"airpress_vf_validation");
}
function airpress_vf_validation($config){
return $config;
}
function airpress_admin_vf_render_section__general() {
echo '' . __( 'Provides examples of the five basic element types.', 'sandbox' ) . '
';
}
function airpress_admin_vf_render_section() {
echo '' . __( '', 'airpress' ) . '
';
}
function airpress_admin_vf_render_element_text($args) {
$options = $args[0];
$option_name = $args[1];
$field_name = $args[2];
echo ' ';
}
function airpress_admin_vf_render_element_toggle($args) {
$options = $args[0];
$option_name = $args[1];
$field_name = $args[2];
$checked = checked( 1, isset( $options[$field_name] ) ? $options[$field_name] : 0, false );
echo ' ';
echo ' ' . $field_name . ' ';
}
function airpress_admin_vf_render_element_select__posttypes($args) {
$options = $args[0];
$option_name = $args[1];
$field_name = $args[2];
$post_types = get_post_types( array( 'public' => true) );
echo '';
foreach ( $post_types as $post_type ) {
$selected = ( $post_type == $options[$field_name] )? "selected" : "";
echo ''.$post_type.' ';
}
echo ' ';
}
function airpress_admin_vf_render_element_select_connections($args) {
$options = $args[0];
$option_name = $args[1];
$field_name = $args[2];
$connections = get_airpress_configs("airpress_cx");
echo '';
foreach ( $connections as $connection ) {
$selected = ($connection["name"] == $options[$field_name])? "selected" : "";
echo ''.$connection["name"].' ';
}
echo ' ';
}
function airpress_admin_vf_render_element_select__page($args) {
$options = $args[0];
$option_name = $args[1];
$field_name = $args[2];
$pages = get_pages();
echo '';
foreach ( $pages as $page ) {
$selected = ($options[$field_name] == $page->ID)? " selected" : "";
$option = '';
$option .= $page->post_title." (".$page->post_name.")";
$option .= ' ';
echo $option;
}
echo ' ';
}
function airpress_admin_vf_render_element_delete($args) {
$options = $args[0];
$option_name = $args[1];
$field_name = $args[2];
$tab = (int)$_GET["tab"];
echo "Yes, delete this configuration ";
}
?>