Initial commit
This commit is contained in:
@ -0,0 +1,220 @@
|
||||
<?php
|
||||
defined( 'WPINC' ) or die;
|
||||
|
||||
class Generate_Page_Header_Locations {
|
||||
/**
|
||||
* Holds the values to be used in the fields callbacks
|
||||
*/
|
||||
private $options;
|
||||
|
||||
/**
|
||||
* Start up
|
||||
*/
|
||||
public function __construct() {
|
||||
add_action( 'admin_menu', array( $this, 'add_plugin_page' ) );
|
||||
add_action( 'admin_init', array( $this, 'page_init' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Add options page
|
||||
*/
|
||||
public function add_plugin_page() {
|
||||
add_submenu_page(
|
||||
function_exists( 'generate_premium_do_elements' ) ? 'themes.php' : 'edit.php?post_type=generate_page_header',
|
||||
__( 'Global Locations', 'gp-premium' ),
|
||||
__( 'Global Locations', 'gp-premium' ),
|
||||
'manage_options',
|
||||
'page-header-global-locations',
|
||||
array( $this, 'create_admin_page' )
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Options page callback
|
||||
*/
|
||||
public function create_admin_page() {
|
||||
// Set class property
|
||||
$this->options = get_option( 'generate_page_header_global_locations' );
|
||||
?>
|
||||
<div class="wrap">
|
||||
<h1><?php _e( 'Global Locations', 'gp-premium' ); ?></h1>
|
||||
<form method="post" action="options.php">
|
||||
<?php
|
||||
// This prints out all hidden setting fields
|
||||
settings_fields( 'page_header_global_locations' );
|
||||
do_settings_sections( 'page-header-global-locations' );
|
||||
submit_button();
|
||||
?>
|
||||
</form>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
* Register and add settings
|
||||
*/
|
||||
public function page_init() {
|
||||
register_setting(
|
||||
'page_header_global_locations',
|
||||
'generate_page_header_global_locations',
|
||||
array( $this, 'sanitize' )
|
||||
);
|
||||
|
||||
add_settings_section(
|
||||
'page_header_global_location_section',
|
||||
'',
|
||||
'',
|
||||
'page-header-global-locations'
|
||||
);
|
||||
|
||||
add_settings_field(
|
||||
'generate_page_header_location_blog',
|
||||
__( 'Posts Page (blog)', 'gp-premium' ),
|
||||
array( $this, 'post_type_select' ),
|
||||
'page-header-global-locations',
|
||||
'page_header_global_location_section',
|
||||
'blog'
|
||||
);
|
||||
|
||||
add_settings_field(
|
||||
'generate_page_header_location_search_results',
|
||||
__( 'Search Results', 'gp-premium' ),
|
||||
array( $this, 'post_type_select' ),
|
||||
'page-header-global-locations',
|
||||
'page_header_global_location_section',
|
||||
'search_results'
|
||||
);
|
||||
|
||||
add_settings_field(
|
||||
'generate_page_header_location_404',
|
||||
__( '404 Template', 'gp-premium' ),
|
||||
array( $this, 'post_type_select' ),
|
||||
'page-header-global-locations',
|
||||
'page_header_global_location_section',
|
||||
'404'
|
||||
);
|
||||
|
||||
add_settings_section(
|
||||
'page_header_cpt_single_section',
|
||||
__( 'Post Types - Single', 'gp-premium' ),
|
||||
'',
|
||||
'page-header-global-locations'
|
||||
);
|
||||
|
||||
$post_types = get_post_types( array( 'public' => true ), 'objects' );
|
||||
|
||||
foreach( $post_types as $type ) {
|
||||
add_settings_field(
|
||||
'generate_page_header_location_' . $type->name,
|
||||
$type->label,
|
||||
array( $this, 'post_type_select' ),
|
||||
'page-header-global-locations',
|
||||
'page_header_cpt_single_section',
|
||||
$type->name
|
||||
);
|
||||
}
|
||||
|
||||
$post_types = get_post_types( array( 'public' => true ), 'objects' );
|
||||
unset( $post_types['attachment'] );
|
||||
unset( $post_types['page'] );
|
||||
unset( $post_types['post'] );
|
||||
|
||||
if ( count( $post_types ) > 0 ) {
|
||||
add_settings_section(
|
||||
'page_header_cpt_archives_section',
|
||||
__( 'Post Types - Archives', 'gp-premium' ),
|
||||
'',
|
||||
'page-header-global-locations'
|
||||
);
|
||||
}
|
||||
|
||||
foreach( $post_types as $type ) {
|
||||
add_settings_field(
|
||||
'generate_page_header_location_' . $type->name . '_archives',
|
||||
$type->label,
|
||||
array( $this, 'post_type_select' ),
|
||||
'page-header-global-locations',
|
||||
'page_header_cpt_archives_section',
|
||||
$type->name . '_archives'
|
||||
);
|
||||
}
|
||||
|
||||
$taxonomies = get_taxonomies( array( 'public' => true ), 'objects' );
|
||||
|
||||
if ( count( $taxonomies ) > 0 ) {
|
||||
add_settings_section(
|
||||
'page_header_taxonomies_section',
|
||||
__( 'Taxonomies - Archives', 'gp-premium' ),
|
||||
'',
|
||||
'page-header-global-locations'
|
||||
);
|
||||
}
|
||||
|
||||
foreach( $taxonomies as $type ) {
|
||||
add_settings_field(
|
||||
'generate_page_header_location_' . $type->name,
|
||||
$type->label,
|
||||
array( $this, 'post_type_select' ),
|
||||
'page-header-global-locations',
|
||||
'page_header_taxonomies_section',
|
||||
$type->name
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sanitize each setting field as needed
|
||||
*
|
||||
* @param array $input Contains all settings fields as array keys
|
||||
*/
|
||||
public function sanitize( $input ) {
|
||||
// Initialize the new array that will hold the sanitize values
|
||||
$new_input = array();
|
||||
|
||||
// Loop through the input and sanitize each of the values
|
||||
if ( is_array( $input ) || is_object( $input ) ) {
|
||||
foreach ( $input as $key => $val ) {
|
||||
$new_input[ $key ] = absint( $val );
|
||||
}
|
||||
}
|
||||
|
||||
return $new_input;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the settings option array and print one of its values
|
||||
*/
|
||||
public function post_type_select( $type ) {
|
||||
$options = wp_parse_args(
|
||||
get_option( 'generate_page_header_global_locations', array() ),
|
||||
''
|
||||
);
|
||||
?>
|
||||
<select id="<?php echo $type;?>" name="generate_page_header_global_locations[<?php echo $type;?>]">
|
||||
<option value=""></option>
|
||||
<?php
|
||||
$page_headers = get_posts(array(
|
||||
'posts_per_page' => -1,
|
||||
'orderby' => 'title',
|
||||
'post_type' => 'generate_page_header',
|
||||
'suppress_filters' => false,
|
||||
));
|
||||
|
||||
$options[ $type ] = ! isset( $options[ $type ] ) ? '' : $options[ $type ];
|
||||
|
||||
foreach( $page_headers as $header ) {
|
||||
printf( '<option value="%1$s" %2$s>%3$s</option>',
|
||||
$header->ID,
|
||||
selected( $options[ $type ], $header->ID ),
|
||||
$header->post_title
|
||||
);
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
|
||||
if ( is_admin() ) {
|
||||
$generate_page_header_locations = new Generate_Page_Header_Locations();
|
||||
}
|
Reference in New Issue
Block a user