Done !
| Server IP : 54.36.91.62 / Your IP : 216.73.216.38 Web Server : Apache System : Linux webm008.cluster127.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64 User : awaywithxm ( 25098) PHP Version : 7.0.33 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/awaywithxm/www/wp-content/plugins/post-grid/includes/ |
Upload File : |
<?php
/*
* @Author PickPlugins
*/
if ( ! defined('ABSPATH')) exit; // if direct access
add_action('post_grid_metabox_tabs_content_shortcode', 'post_grid_metabox_tabs_content_shortcode',10, 2);
function post_grid_metabox_tabs_content_shortcode($tab, $post_id){
$settings_tabs_field = new settings_tabs_field();
?>
<div class="section">
<div class="section-title">Shortcodes</div>
<p class="description section-description">Simply copy these shortcode and user under content</p>
<?php
ob_start();
?>
<div class="copy-to-clipboard">
<input type="text" value="[post_grid id='<?php echo $post_id; ?>']"> <span class="copied">Copied</span>
<p class="description">You can use this shortcode under post content</p>
</div>
<div class="copy-to-clipboard">
To avoid conflict:<br>
<input type="text" value="[post_grid_pickplugins id='<?php echo $post_id; ?>']"> <span class="copied">Copied</span>
<p class="description">To avoid conflict with 3rd party shortcode also used same <code>[post_grid]</code>You can use this shortcode under post content</p>
</div>
<div class="copy-to-clipboard">
<textarea cols="50" rows="1" onClick="this.select();" ><?php echo '<?php echo do_shortcode("[post_grid id='; echo "'".$post_id."']"; echo '"); ?>'; ?></textarea> <span class="copied">Copied</span>
<p class="description">PHP Code, you can use under theme .php files.</p>
</div>
<div class="copy-to-clipboard">
<textarea cols="50" rows="1" onClick="this.select();" ><?php echo '<?php echo do_shortcode("[post_grid_pickplugins id='; echo "'".$post_id."']"; echo '"); ?>'; ?></textarea> <span class="copied">Copied</span>
<p class="description">To avoid conflict, PHP code you can use under theme .php files.</p>
</div>
<style type="text/css">
.copy-to-clipboard{}
.copy-to-clipboard .copied{
display: none;
background: #e5e5e5;
padding: 4px 10px;
line-height: normal;
}
</style>
<script>
jQuery(document).ready(function($){
$(document).on('click', '.copy-to-clipboard input, .copy-to-clipboard textarea', function () {
$(this).focus();
$(this).select();
document.execCommand('copy');
$(this).parent().children('.copied').fadeIn().fadeOut(2000);
})
})
</script>
<?php
$html = ob_get_clean();
$args = array(
'id' => 'post_grid_shortcodes',
'title' => __('Post Grid Shortcode','post-grid'),
'details' => '',
'type' => 'custom_html',
'html' => $html,
);
$settings_tabs_field->generate_field($args, $post_id);
?>
</div>
<?php
}
add_action('post_grid_metabox_tabs_content_general', 'post_grid_metabox_tabs_content_general', 10, 2);
function post_grid_metabox_tabs_content_general($tab, $post_id){
$settings_tabs_field = new settings_tabs_field();
$post_grid_meta_options = get_post_meta($post_id, 'post_grid_meta_options', true);
$lazy_load_enable = !empty($post_grid_meta_options['lazy_load_enable']) ? $post_grid_meta_options['lazy_load_enable'] : 'yes';
$lazy_load_image_src = !empty($post_grid_meta_options['lazy_load_image_src']) ? $post_grid_meta_options['lazy_load_image_src'] : '';
$load_fontawesome = !empty($post_grid_meta_options['load_fontawesome']) ? $post_grid_meta_options['load_fontawesome'] : '';
$container_padding = !empty($post_grid_meta_options['container']['padding']) ? $post_grid_meta_options['container']['padding'] : '10px';
$container_bg_color = !empty($post_grid_meta_options['container']['bg_color']) ? $post_grid_meta_options['container']['bg_color'] : '';
$container_bg_image = !empty($post_grid_meta_options['container']['bg_image']) ? $post_grid_meta_options['container']['bg_image'] : '';
$items_wrapper_text_align = !empty($post_grid_meta_options['items_wrapper']['text_align']) ? $post_grid_meta_options['items_wrapper']['text_align'] : '';
?>
<div class="section">
<div class="section-title"><?php echo __('Lazy load', 'post-grid'); ?></div>
<p class="description section-description"><?php echo __('Choose lazy load options.', 'post-grid'); ?></p>
<?php
$args = array(
'id' => 'lazy_load_enable',
'parent' => 'post_grid_meta_options',
'title' => __('Enable lazy load','post-grid'),
'details' => __('Choose enable or disable lazy load.','post-grid'),
'type' => 'radio',
'multiple' => true,
'value' => $lazy_load_enable,
'default' => 'no',
'args' => array(
'no'=>__('No','post-grid'),
'yes'=>__('Yes','post-grid'),
),
);
$settings_tabs_field->generate_field($args, $post_id);
$args = array(
'id' => 'lazy_load_image_src',
'parent' => 'post_grid_meta_options',
'title' => __('Lazy load image source','post-grid'),
'details' => __('Set custom lazy load image source.','post-grid'),
'type' => 'media_url',
'value' => $lazy_load_image_src,
'default' => '',
);
$settings_tabs_field->generate_field($args, $post_id);
$args = array(
'id' => 'load_fontawesome',
'parent' => 'post_grid_meta_options',
'title' => __('Load font awesome','post-grid'),
'details' => __('Choose enable or disable font-awesome load.','post-grid'),
'type' => 'radio',
'multiple' => true,
'value' => $load_fontawesome,
'default' => 'no',
'args' => array(
'no'=>__('No','post-grid'),
'yes'=>__('Yes','post-grid'),
),
);
$settings_tabs_field->generate_field($args, $post_id);
?>
</div>
<div class="section">
<div class="section-title"><?php echo __('Container settings', 'post-grid'); ?></div>
<p class="description section-description"><?php echo __('Choose container options.', 'post-grid'); ?></p>
<?php
$args = array(
'id' => 'padding',
'parent' => 'post_grid_meta_options[container]',
'title' => __('Container padding','post-grid'),
'details' => __('Set custom padding for grid container, ex: 10px 15px 10px 15px','post-grid'),
'type' => 'text',
'value' => $container_padding,
'default' => '',
);
$settings_tabs_field->generate_field($args, $post_id);
$args = array(
'id' => 'bg_color',
'parent' => 'post_grid_meta_options[container]',
'title' => __('Container background color','post-grid'),
'details' => __('Set custom background color for grid container.','post-grid'),
'type' => 'colorpicker',
'value' => $container_bg_color,
'default' => '',
);
$settings_tabs_field->generate_field($args, $post_id);
$args = array(
'id' => 'bg_image',
'parent' => 'post_grid_meta_options[container]',
'title' => __('Container background color','post-grid'),
'details' => __('Set custom background color for grid container.','post-grid'),
'type' => 'media_url',
'value' => $container_bg_image,
'default' => '',
);
$settings_tabs_field->generate_field($args, $post_id);
?>
</div>
<div class="section">
<div class="section-title"><?php echo __('Items wrapper settings', 'post-grid'); ?></div>
<p class="description section-description"><?php echo __('Choose items wrapper options.', 'post-grid'); ?></p>
<?php
$args = array(
'id' => 'text_align',
'parent' => 'post_grid_meta_options[items_wrapper]',
'title' => __('Text align','post-grid'),
'details' => __('Container text align.','post-grid'),
'type' => 'select',
'value' => $items_wrapper_text_align,
'default' => 'center',
'args' => array(
'left'=>__('Left','post-grid'),
'center'=>__('Center','post-grid'),
'right'=>__('Right','post-grid'),
),
);
$settings_tabs_field->generate_field($args, $post_id);
?>
</div>
<?php
}
add_action('post_grid_metabox_tabs_content_query_post', 'post_grid_metabox_tabs_content_query_post', 10, 2);
function post_grid_metabox_tabs_content_query_post($tab, $post_id){
$settings_tabs_field = new settings_tabs_field();
$class_post_grid_functions = new class_post_grid_functions();
$post_grid_posttypes_array = post_grid_posttypes_array();
$post_grid_meta_options = get_post_meta($post_id, 'post_grid_meta_options', true);
$post_types = !empty($post_grid_meta_options['post_types']) ? $post_grid_meta_options['post_types'] : array('post');
$categories = !empty($post_grid_meta_options['categories']) ? $post_grid_meta_options['categories'] : array();
$categories_relation = !empty($post_grid_meta_options['categories_relation']) ? $post_grid_meta_options['categories_relation'] : 'OR';
$taxonomies = !empty($post_grid_meta_options['taxonomies']) ? $post_grid_meta_options['taxonomies'] : array();
$post_status = !empty($post_grid_meta_options['post_status']) ? $post_grid_meta_options['post_status'] : array();
$query_order = !empty($post_grid_meta_options['query_order']) ? $post_grid_meta_options['query_order'] : '';
$query_orderby = !empty($post_grid_meta_options['query_orderby']) ? $post_grid_meta_options['query_orderby'] : '';
$query_orderby_meta_key = !empty($post_grid_meta_options['query_orderby_meta_key']) ? $post_grid_meta_options['query_orderby_meta_key'] : '';
$posts_per_page = !empty($post_grid_meta_options['posts_per_page']) ? $post_grid_meta_options['posts_per_page'] : 10;
$offset = isset($post_grid_meta_options['offset']) ? $post_grid_meta_options['offset'] : '0';
$ignore_paged = isset($post_grid_meta_options['ignore_paged']) ? $post_grid_meta_options['ignore_paged'] : 'no';
$exclude_post_id = isset($post_grid_meta_options['exclude_post_id']) ? $post_grid_meta_options['exclude_post_id'] : '';
$include_post_id = isset($post_grid_meta_options['include_post_id']) ? $post_grid_meta_options['include_post_id'] : '';
$keyword = !empty($post_grid_meta_options['keyword']) ? $post_grid_meta_options['keyword'] :'';
$no_post_text = !empty($post_grid_meta_options['no_post_text']) ? $post_grid_meta_options['no_post_text'] : '';
$post_taxonomies_arr = post_grid_get_taxonomies($post_types)
?>
<div class="section">
<div class="section-title">Query Post</div>
<p class="description section-description">Set the option for display and query posts.</p>
<?php
$args = array(
'id' => 'post_types',
'parent' => 'post_grid_meta_options',
'title' => __('Post types','post-grid'),
'details' => __('Select your desired post types here you want to display post from, you can choose multiple post type.','post-grid'),
'type' => 'select2',
'multiple' => true,
'value' => $post_types,
'default' => array('post'),
'attributes' => array('grid_id'=>$post_id),
'args' => $post_grid_posttypes_array,
);
$settings_tabs_field->generate_field($args, $post_id);
?>
<div class="setting-field">
<div class="field-lable">Post Taxonomies & terms</div>
<div class="field-input">
<div class="expandable" id="taxonomies-terms">
<?php
if(!empty($post_taxonomies_arr)):
foreach ($post_taxonomies_arr as $taxonomyIndex => $taxonomy){
$taxonomy_term_arr = array();
$the_taxonomy = get_taxonomy($taxonomy);
$terms_relation = isset($taxonomies[$taxonomy]['terms_relation']) ? $taxonomies[$taxonomy]['terms_relation'] : 'IN';
$terms = isset($taxonomies[$taxonomy]['terms']) ? $taxonomies[$taxonomy]['terms'] : array();
$checked = isset($taxonomies[$taxonomy]['checked']) ? $taxonomies[$taxonomy]['checked'] : '';
//var_dump($terms_relation);
$taxonomy_terms = get_terms( $taxonomy, array(
'hide_empty' => false,
) );
if(!empty($taxonomy_terms))
foreach ($taxonomy_terms as $taxonomy_term){
$taxonomy_term_arr[$taxonomy_term->term_id] =$taxonomy_term->name.'('.$taxonomy_term->count.')';
}
$taxonomy_term_arr = !empty($taxonomy_term_arr) ? $taxonomy_term_arr : array();
?>
<div class="item">
<div class="header">
<span class="expand ">
<i class="fas fa-expand"></i>
<i class="fas fa-compress"></i>
</span>
<label><input type="checkbox" <?php if(!empty($checked)) echo 'checked'; ?> name="post_grid_meta_options[taxonomies][<?php echo $taxonomy; ?>][checked]" value="<?php echo $taxonomy; ?>" /> <?php echo $the_taxonomy->labels->name; ?>(<?php echo $taxonomy; ?>)</label>
</div>
<div class="options">
<?php
$args = array(
'id' => 'terms',
'css_id' => 'terms-'.$taxonomyIndex,
'parent' => 'post_grid_meta_options[taxonomies]['.$taxonomy.']',
'title' => __('Categories or Terms','post-grid'),
'details' => __('Select post terms or categories','post-grid'),
'type' => 'select2',
'multiple' => true,
'value' => $terms,
'default' => array(),
'args' => $taxonomy_term_arr,
);
$settings_tabs_field->generate_field($args, $post_id);
$args = array(
'id' => 'terms_relation',
'parent' => 'post_grid_meta_options[taxonomies]['.$taxonomy.']',
'title' => __('Terms relation','post-grid'),
'details' => __('Choose term relation. some option only available in pro','post-grid'),
'type' => 'radio',
'for' => $taxonomy,
'multiple' => true,
'value' => $terms_relation,
'default' => 'IN',
'args' => array(
'IN'=>__('IN','post-grid'),
'NOT IN'=>__('NOT IN','post-grid'),
'AND'=>__('AND','post-grid'),
'EXISTS'=>__('EXISTS','post-grid'),
'NOT EXISTS'=>__('NOT EXISTS','post-grid'),
),
);
$settings_tabs_field->generate_field($args, $post_id);
?>
</div>
</div>
<?php
}else:
echo __('Please choose at least one post types. save/update post grid','post-grid');
endif;
?>
</div>
<p class="description"><?php echo __('Select post categories & terms.', 'post-grid'); ?></p>
</div>
</div>
<?php
$args = array(
'id' => 'categories_relation',
'parent' => 'post_grid_meta_options',
'title' => __('Taxonomies relation','post-grid'),
'details' => __('Choose Taxonomies relation.','post-grid'),
'type' => 'radio',
//'for' => $taxonomy,
'multiple' => true,
'value' => $categories_relation,
'default' => 'IN',
'args' => array(
'OR'=>__('OR','post-grid'),
'AND'=>__('AND','post-grid'),
),
);
$settings_tabs_field->generate_field($args, $post_id);
$args = array(
'id' => 'post_status',
'parent' => 'post_grid_meta_options',
'title' => __('Post status','post-grid'),
'details' => __('Display post from following post status.','post-grid'),
'type' => 'select2',
'multiple' => true,
'value' => $post_status,
'default' => array('publish'),
'args' => $class_post_grid_functions->get_post_status(),
);
$settings_tabs_field->generate_field($args, $post_id);
$args = array(
'id' => 'query_order',
'parent' => 'post_grid_meta_options',
'title' => __('Post query order','post-grid'),
'details' => __('Query order ascending or descending.','post-grid'),
'type' => 'select',
//'for' => $taxonomy,
//'multiple' => true,
'value' => $query_order,
'default' => 'DESC',
'args' => array(
'ASC'=>__('Ascending','post-grid'),
'DESC'=>__('Descending','post-grid'),
),
);
$settings_tabs_field->generate_field($args, $post_id);
$args = array(
'id' => 'query_orderby',
'parent' => 'post_grid_meta_options',
'title' => __('Post query orderby','post-grid'),
'details' => __('Select post query orderby','post-grid'),
'type' => 'select2',
'multiple' => true,
'value' => $query_orderby,
'default' => array('date'),
'args' => $class_post_grid_functions->get_query_orderby(),
);
$settings_tabs_field->generate_field($args, $post_id);
$args = array(
'id' => 'query_orderby_meta_key',
'parent' => 'post_grid_meta_options',
'title' => __('Query orderby meta key','post-grid'),
'details' => __('You can use custom meta field key for orderby meta key','post-grid'),
'type' => 'text',
'value' => $query_orderby_meta_key,
'default' => '',
'placeholder' => 'my_meta_key',
);
$settings_tabs_field->generate_field($args, $post_id);
$args = array(
'id' => 'posts_per_page',
'parent' => 'post_grid_meta_options',
'title' => __('Posts per page','post-grid'),
'details' => __('Number of post each pagination. -1 to display all. default is 10 if you left empty.','post-grid'),
'type' => 'text',
'value' => $posts_per_page,
'default' => '',
'placeholder' => '10',
);
$settings_tabs_field->generate_field($args, $post_id);
$args = array(
'id' => 'offset',
'parent' => 'post_grid_meta_options',
'title' => __('Offset','post-grid'),
'details' => __('Display posts from the n\'th, if you set Posts per page to -1 will not work offset.','post-grid'),
'type' => 'text',
'value' => $offset,
'default' => '',
'placeholder' => '3',
);
$settings_tabs_field->generate_field($args, $post_id);
$args = array(
'id' => 'ignore_paged',
'parent' => 'post_grid_meta_options',
'title' => __('Ignore paged/page query','post-grid'),
'details' => __('Ignore paged/page variable from query.','post-grid'),
'type' => 'select',
//'for' => $taxonomy,
//'multiple' => true,
'value' => $ignore_paged,
'default' => 'no',
'args' => array(
'no'=>__('No','post-grid'),
'yes'=>__('Yes','post-grid'),
),
);
$settings_tabs_field->generate_field($args, $post_id);
$args = array(
'id' => 'exclude_post_id',
'parent' => 'post_grid_meta_options',
'title' => __('Exclude by post ID','post-grid'),
'details' => __('You can exclude any post by ids here, use comma separate post id value, ex: 45,48','post-grid'),
'type' => 'text',
'value' => $exclude_post_id,
'default' => '',
'placeholder' => '45,48,50',
);
$settings_tabs_field->generate_field($args, $post_id);
$args = array(
'id' => 'include_post_id',
'parent' => 'post_grid_meta_options',
'title' => __('Include by post ID','post-grid'),
'details' => __('You can include any post by ids here, use comma separate post id value, ex: 45,48','post-grid'),
'type' => 'text',
'value' => $include_post_id,
'default' => '',
'placeholder' => '45,48,50',
);
$settings_tabs_field->generate_field($args, $post_id);
$args = array(
'id' => 'keyword',
'parent' => 'post_grid_meta_options',
'title' => __('Search parameter','post-grid'),
'details' => __('Query post by search keyword, please follow the reference https://codex.wordpress.org/Class_Reference/WP_Query#Search_Parameter','post-grid'),
'type' => 'text',
'value' => $keyword,
'default' => '',
'placeholder' => 'Keyword',
);
$settings_tabs_field->generate_field($args, $post_id);
$args = array(
'id' => 'no_post_text',
'parent' => 'post_grid_meta_options',
'title' => __('No post found text','post-grid'),
'details' => __('Custom text for no post found. default: No post found','post-grid'),
'type' => 'text',
'value' => $no_post_text,
'default' => '',
'placeholder' => 'No post found',
);
$settings_tabs_field->generate_field($args, $post_id);
?>
</div>
<?php
}
add_action('post_grid_metabox_tabs_content_layouts','post_grid_metabox_tabs_content_layouts',10, 2);
function post_grid_metabox_tabs_content_layouts($tab, $post_id){
//var_dump($post_id);
$settings_tabs_field = new settings_tabs_field();
$post_grid_meta_options = get_post_meta($post_id,'post_grid_meta_options', true);
$layout_id = !empty($post_grid_meta_options['layout_id']) ? $post_grid_meta_options['layout_id'] : ''; //post_grid_get_first_post('post_grid_layout')
$post_grid_info = get_option('post_grid_info');
$import_layouts = isset($post_grid_info['import_layouts']) ? $post_grid_info['import_layouts'] : '';
//var_dump($import_layouts);
?>
<div class="section">
<div class="section-title"><?php echo __('Layouts', 'post-grid'); ?></div>
<p class="description section-description"><?php echo __('Choose item layouts.', 'post-grid'); ?></p>
<?php
$layout_convert_url = get_permalink($post_id).'?post_grid_layout_convert=true';
$layout_convert_url = wp_nonce_url($layout_convert_url, 'post_grid_layout_convert');
ob_start();
?>
<p><a target="_blank" class="button" href="<?php echo admin_url().'post-new.php?post_type=post_grid_layout'; ?>"><?php echo __('Create layout','post-grid'); ?></a> </p>
<p><a target="_blank" class="button" href="<?php echo admin_url().'edit.php?post_type=post_grid_layout'; ?>"><?php echo __('Manage layouts','post-grid'); ?></a> </p>
<p><a target="_blank" class="button" href="<?php echo $layout_convert_url; ?>"><?php echo __('Covert old layout to new layout','post-grid'); ?></a> for this post grid.</p>
<?php
if($import_layouts != 'done'):
?>
<p><a href="<?php echo admin_url().'edit.php?post_type=post_grid&page=import_layouts'; ?>" class="button import-default-layouts"><?php echo __('Import default layouts','post-grid'); ?></a> </p>
<?php
endif;
$html = ob_get_clean();
$args = array(
'id' => 'create_post_grid_layout',
'parent' => 'post_grid_meta_options[query]',
'title' => __('Create layout','post-grid'),
'details' => __('Please follow the links to create layouts or manage.','post-grid'),
'type' => 'custom_html',
'html' => $html,
);
$settings_tabs_field->generate_field($args);
$item_layout_args = array();
$query_args['post_type'] = array('post_grid_layout');
$query_args['post_status'] = array('publish');
$query_args['orderby'] = 'date';
$query_args['order'] = 'DESC';
$query_args['posts_per_page'] = -1;
$wp_query = new WP_Query($query_args);
$item_layout_args[''] = array('name'=>'Empty layout', 'thumb'=> 'https://i.imgur.com/JyurCtY.jpg', );
if ( $wp_query->have_posts() ) :
while ( $wp_query->have_posts() ) : $wp_query->the_post();
$post_id = get_the_id();
$layout_name = get_the_title();
$product_thumb = wp_get_attachment_image_src( get_post_thumbnail_id($post_id), 'full' );
$product_thumb_url = isset($product_thumb['0']) ? esc_url_raw($product_thumb['0']) : '';
$layout_options = get_post_meta($post_id,'layout_options', true);
$layout_preview_img = !empty($layout_options['layout_preview_img']) ? $layout_options['layout_preview_img'] : 'https://i.imgur.com/JyurCtY.jpg';
$product_thumb_url = !empty( $product_thumb_url ) ? $product_thumb_url : $layout_preview_img;
$item_layout_args[$post_id] = array('name'=>$layout_name, 'link_text'=>'Edit', 'link'=> get_edit_post_link($post_id), 'thumb'=> $product_thumb_url, );
endwhile;
endif;
$args = array(
'id' => 'layout_id',
'parent' => 'post_grid_meta_options',
'title' => __('Item layouts','post-grid'),
'details' => __('Choose grid item layout. When "Empty layout" is selecetd old layout data will be loaded.','post-grid'),
'type' => 'radio_image',
'value' => $layout_id,
'default' => '',
'width' => '250px',
'args' => $item_layout_args,
);
$settings_tabs_field->generate_field($args);
?>
</div>
<?php
}
add_action('post_grid_metabox_tabs_content_skin_layout', 'post_grid_metabox_tabs_content_skin_layout', 10, 2);
function post_grid_metabox_tabs_content_skin_layout($tab, $post_id){
$settings_tabs_field = new settings_tabs_field();
$class_post_grid_functions = new class_post_grid_functions();
$post_grid_posttypes_array = post_grid_posttypes_array();
$post_grid_meta_options = get_post_meta($post_id, 'post_grid_meta_options', true);
$layout_content = !empty($post_grid_meta_options['layout']['content']) ? $post_grid_meta_options['layout']['content'] : 'OR';
$enable_multi_skin = !empty($post_grid_meta_options['enable_multi_skin']) ? $post_grid_meta_options['enable_multi_skin'] : 'no';
$skin = !empty($post_grid_meta_options['skin']) ? $post_grid_meta_options['skin'] : 'flat';
?>
<div class="section">
<div class="section-title">Slin & Layout</div>
<p class="description section-description">Choose skin and customize layout.</p>
<?php
$class_post_grid_functions = new class_post_grid_functions();
ob_start();
?>
<div class="layout-list">
<div class="idle ">
<div class="name">
<select class="select-layout-content" name="post_grid_meta_options[layout][content]" >
<?php
$post_grid_layout_content = get_option('post_grid_layout_content');
if(empty($post_grid_layout_content)){
$layout_content_list = $class_post_grid_functions->layout_content_list();
}
else{
$layout_content_list = $post_grid_layout_content;
}
foreach($layout_content_list as $layout_key=>$layout_info){
?>
<option <?php if($layout_content==$layout_key) echo 'selected'; ?> value="<?php echo $layout_key; ?>"><?php echo $layout_key; ?></option>
<?php
}
?>
</select>
<a target="_blank" class="edit-layout button" href="<?php echo admin_url().'edit.php?post_type=post_grid&page=layout_editor&layout_content='.$layout_content;?>" ><?php echo __('Edit' , 'post-grid'); ?></a>
</div>
<script>
jQuery(document).ready(function($)
{
$(document).on('change', '.select-layout-content', function()
{
var layout = $(this).val();
$('.edit-layout').attr('href', '<?php echo admin_url().'edit.php?post_type=post_grid&page=layout_editor&layout_content='; ?>'+layout);
})
})
</script>
<?php
if(empty($layout_content)){
$layout_content = 'flat-left';
}
?>
<div class="layer-content">
<div class="<?php echo $layout_content; ?>">
<?php
$post_grid_layout_content = get_option( 'post_grid_layout_content' );
if(empty($post_grid_layout_content)){
$layout = $class_post_grid_functions->layout_content($layout_content);
}
else{
if(!empty($post_grid_layout_content[$layout_content])){
$layout = $post_grid_layout_content[$layout_content];
}
else{
$layout = array();
}
}
// $layout = $class_post_grid_functions->layout_content($layout_content);
//var_dump($layout);
foreach($layout as $item_key=>$item_info){
$item_key = $item_info['key'];
?>
<div class="item <?php echo $item_key; ?>" style=" <?php echo $item_info['css']; ?> ">
<?php
if($item_key=='thumb'){
?>
<img style="width:100%; height:auto;" src="<?php echo post_grid_plugin_url; ?>assets/admin/images/thumb.png" />
<?php
}
elseif($item_key=='title'){
?>
Lorem Ipsum is simply
<?php
}
elseif($item_key=='excerpt'){
?>
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text
<?php
}
else{
echo $item_info['name'];
}
?>
</div>
<?php
}
?>
</div>
</div>
</div>
</div>
<style type="text/css">
#post-grid .layout-list .idle, #post-grid .layout-list .hover {
display: inline-block;
height: auto;
margin: 0 10px;
vertical-align: top;
width: 400px;
}
#post-grid .layout-list .hover {
display: none;
}
#post-grid .layout-list .idle .name, #post-grid .layout-list .hover .name {
background: rgb(240, 240, 240) none repeat scroll 0 0;
border-bottom: 1px solid rgb(153, 153, 153);
font-size: 20px;
line-height: normal;
padding: 5px 0;
text-align: center;
}
#post-grid .layout-list .idle .name .edit-layout {
background: #ddd none repeat scroll 0 0;
padding: 2px 10px;
text-decoration: none;
}
</style>
<?php
$html = ob_get_clean();
$args = array(
'id' => 'content_layout',
'title' => __('Content Layout','post-grid'),
'details' => 'Choose Content Layout',
'type' => 'custom_html',
'html' => $html,
);
$settings_tabs_field->generate_field($args, $post_id);
$skins = $class_post_grid_functions->skins();
// ob_start();
?>
<div class="setting-field">
<div class="field-lable">Skins</div>
<p class="description">Select grid skins</p>
<div class="field-input">
</div>
</div>
<div class="skin-list">
<?php
if(!empty($skins))
foreach($skins as $skin_slug=>$skin_info){
?>
<div class="skin-container">
<?php
if($skin==$skin_slug){
$checked = 'checked';
$selected_skin = 'selected';
}
else{
$checked = '';
$selected_skin = '';
}
?>
<div class="header <?php echo $selected_skin; ?>">
<!-- <span class="edit-link"><a href="#">Edit</a></span>-->
<label><input <?php echo $checked; ?> type="radio" name="post_grid_meta_options[skin]" value="<?php echo $skin_slug; ?>" ><?php echo $skin_info['name']; ?></label>
</div>
<div class="skin <?php echo $skin_slug; ?>">
<div class="layer-media">
<div class="thumb "><img src="<?php echo post_grid_plugin_url; ?>assets/admin/images/thumb.png" /></div>
</div>
<div class="layer-content">
<div class="title ">Hello title</div>
<div class="content ">There are many variations of passages of Lorem Ipsum available, but the majority have</div>
</div>
</div>
</div>
<?php
}
?>
</div>
<style type="text/css">
#post-grid .skin-list{
text-align: center;
}
#post-grid .skin-list .skin-container {
display: inline-block;
margin: 10px;
width: 310px;
overflow: hidden;
vertical-align: top;
padding: 15px;
}
#post-grid .skin-list .skin-container .header {
background: rgb(252, 110, 60) none repeat scroll 0 0;
padding: 3px 10px;
text-align: left;
}
#post-grid .skin-list .skin-container .header.selected {
background: rgb(58, 212, 127) none repeat scroll 0 0;
}
#post-grid .skin-list .edit-link {
float: right;
}
#post-grid .skin-list .edit-link a{
color: #fff;
text-decoration: none;
}
#post-grid .skin-list .skin-container label {
color: rgb(255, 255, 255);
}
#post-grid .skin-list .skin {
display: inline-block;
overflow: hidden;
vertical-align: top;
}
#post-grid .skin-list .skin .thumb img {
height: auto;
width: 100%;
}
#post-grid .skin-list .skin .title {
font-size: 16px;
line-height: normal;
padding: 5px 0;
}
#post-grid .skin-list .skin .content {
font-size: 13px;
line-height: normal;
padding: 5px 0;
}
#post-grid .skin-list .layer-content > div {
padding: 5px 15px !important;
}
</style>
<?php
// $html = ob_get_clean();
//
// $args = array(
// 'id' => 'skins',
// 'title' => __('Skins','post-grid'),
// 'details' => 'Select grid Skins',
// 'type' => 'custom_html',
// 'html' => $html,
//
//
// );
//
// $settings_tabs_field->generate_field($args, $post_id);
$items_media_height_style = !empty($post_grid_meta_options['media_height']['style']) ? $post_grid_meta_options['media_height']['style'] : 'auto_height';
$items_media_fixed_height = !empty($post_grid_meta_options['media_height']['fixed_height']) ? $post_grid_meta_options['media_height']['fixed_height'] : '220px';
$featured_img_size = !empty($post_grid_meta_options['featured_img_size']) ? $post_grid_meta_options['featured_img_size'] : '';
$thumb_linked = !empty($post_grid_meta_options['thumb_linked']) ? $post_grid_meta_options['thumb_linked'] : 'yes';
$media_source = !empty($post_grid_meta_options['media_source']) ? $post_grid_meta_options['media_source'] : array();
ob_start();
?>
<label><input <?php if($items_media_height_style=='auto_height') echo 'checked'; ?> type="radio" name="post_grid_meta_options[media_height][style]" value="auto_height" /><?php _e('Auto height', 'post-grid'); ?></label><br />
<label><input <?php if($items_media_height_style=='fixed_height') echo 'checked'; ?> type="radio" name="post_grid_meta_options[media_height][style]" value="fixed_height" /><?php _e('Fixed height', 'post-grid'); ?></label><br />
<label><input <?php if($items_media_height_style=='max_height') echo 'checked'; ?> type="radio" name="post_grid_meta_options[media_height][style]" value="max_height" /><?php _e('Max height', 'post-grid'); ?></label><br />
<div class="">
<input type="text" name="post_grid_meta_options[media_height][fixed_height]" value="<?php echo $items_media_fixed_height; ?>" />
</div>
<?php
$html = ob_get_clean();
$args = array(
'id' => 'skins',
'title' => __('Media height','post-grid'),
'details' => __('Grid item media height for different device, you can use % or px, em and etc, example: 80% or 250px','post-grid'),
'type' => 'custom_html',
'html' => $html,
);
$settings_tabs_field->generate_field($args, $post_id);
$args = array(
'id' => 'featured_img_size',
'parent' => 'post_grid_meta_options',
'title' => __('Featured image size','post-grid'),
'details' => __('Select media image size','post-grid'),
'type' => 'select',
'value' => $featured_img_size,
'default' => 'large',
'args' => post_grid_image_sizes(),
);
$settings_tabs_field->generate_field($args, $post_id);
$args = array(
'id' => 'thumb_linked',
'parent' => 'post_grid_meta_options',
'title' => __('Featured image linked to post','post-grid'),
'details' => __('Select if you want to link to post with featured image.','post-grid'),
'type' => 'radio',
'multiple' => true,
'value' => $thumb_linked,
'default' => 'yes',
'args' => array(
'yes'=>__('Yes','post-grid'),
'no'=>__('No','post-grid'),
),
);
$settings_tabs_field->generate_field($args, $post_id);
ob_start();
?>
<?php
if(empty($media_source)){
$media_source = $class_post_grid_functions->media_source();
}
else{
//$media_source_main = $class_post_grid_functions->media_source();
$media_source = $media_source;
}
?>
<div class="media-source-list expandable">
<?php
foreach($media_source as $source_key=>$source_info){
?>
<div class="item">
<div class="header">
<span class="move" title="<?php echo __('Move', 'post-grid'); ?>"><i class="fas fa-bars"></i></span>
<input type="hidden" name="post_grid_meta_options[media_source][<?php echo $source_info['id']; ?>][id]" value="<?php echo $source_info['id']; ?>" />
<input type="hidden" name="post_grid_meta_options[media_source][<?php echo $source_info['id']; ?>][title]" value="<?php echo $source_info['title']; ?>" />
<label>
<input <?php if(!empty($source_info['checked'])) echo 'checked'; ?> type="checkbox" name="post_grid_meta_options[media_source][<?php echo $source_info['id']; ?>][checked]" value="yes" /><?php echo $source_info['title']; ?>
</label>
</div>
</div>
<?php
}
?>
</div>
<script>
jQuery(document).ready(function($)
{
$( ".media-source-list" ).sortable({revert: "invalid", handle: '.move'});
})
</script>
<?php
$html = ob_get_clean();
$args = array(
'id' => 'skins',
'title' => __('Media source','post-grid'),
'details' => __('Choose media source you want to display from.','post-grid'),
'type' => 'custom_html',
'html' => $html,
);
$settings_tabs_field->generate_field($args);
?>
</div>
<?php
}
add_action('post_grid_metabox_tabs_content_item_style', 'post_grid_metabox_tabs_content_item_style', 10, 2);
function post_grid_metabox_tabs_content_item_style($tab, $post_id){
$settings_tabs_field = new settings_tabs_field();
$class_post_grid_functions = new class_post_grid_functions();
$post_grid_meta_options = get_post_meta($post_id, 'post_grid_meta_options', true);
$items_height_style = !empty($post_grid_meta_options['item_height']['style']) ? $post_grid_meta_options['item_height']['style'] : 'auto_height';
$items_height_style_tablet = !empty($post_grid_meta_options['item_height']['style_tablet']) ? $post_grid_meta_options['item_height']['style_tablet'] : 'auto_height';
$items_height_style_mobile = !empty($post_grid_meta_options['item_height']['style_mobile']) ? $post_grid_meta_options['item_height']['style_mobile'] : 'auto_height';
$items_fixed_height = !empty($post_grid_meta_options['item_height']['fixed_height']) ? $post_grid_meta_options['item_height']['fixed_height'] : '220px';
$items_fixed_height_tablet = !empty($post_grid_meta_options['item_height']['fixed_height_tablet']) ? $post_grid_meta_options['item_height']['fixed_height_tablet'] : '220px';
$items_fixed_height_mobile = !empty($post_grid_meta_options['item_height']['fixed_height_mobile']) ? $post_grid_meta_options['item_height']['fixed_height_mobile'] : '220px';
$items_bg_color_type = !empty($post_grid_meta_options['items_bg_color_type']) ? $post_grid_meta_options['items_bg_color_type'] : 'fixed';
$items_bg_color = !empty($post_grid_meta_options['items_bg_color']) ? $post_grid_meta_options['items_bg_color'] : '#fff';
$items_margin = !empty($post_grid_meta_options['margin']) ? $post_grid_meta_options['margin'] : '10px';
$item_padding = !empty($post_grid_meta_options['item_padding']) ? $post_grid_meta_options['item_padding'] : '0px';
?>
<div class="section">
<div class="section-title">Item style settings</div>
<p class="description section-description">Customize item style</p>
<?php
ob_start();
?>
<table>
<tr>
<td style="padding: 0 20px 0 0">
<div class="">
<p><b>Desktop:</b>(min-width:1024px)</p>
<label><input <?php if($items_height_style=='auto_height') echo 'checked'; ?> type="radio" name="post_grid_meta_options[item_height][style]" value="auto_height" /><?php _e('Auto height','post-grid'); ?></label><br />
<label><input <?php if($items_height_style=='fixed_height') echo 'checked'; ?> type="radio" name="post_grid_meta_options[item_height][style]" value="fixed_height" /><?php _e('Fixed height','post-grid'); ?></label><br />
<label><input <?php if($items_height_style=='max_height') echo 'checked'; ?> type="radio" name="post_grid_meta_options[item_height][style]" value="max_height" /><?php _e('Max height','post-grid'); ?></label><br />
<input type="text" name="post_grid_meta_options[item_height][fixed_height]" value="<?php echo $items_fixed_height; ?>" />
</div>
</td>
</tr>
<tr>
<td style="padding: 0 20px 0 0">
<div class="">
<p><b>Tablet:</b>( min-width:768px )</p>
<label><input <?php if($items_height_style_tablet=='auto_height') echo 'checked'; ?> type="radio" name="post_grid_meta_options[item_height][style_tablet]" value="auto_height" /><?php _e('Auto height','post-grid'); ?></label><br />
<label><input <?php if($items_height_style_tablet=='fixed_height') echo 'checked'; ?> type="radio" name="post_grid_meta_options[item_height][style_tablet]" value="fixed_height" /><?php _e('Fixed height','post-grid'); ?></label><br />
<label><input <?php if($items_height_style_tablet=='max_height') echo 'checked'; ?> type="radio" name="post_grid_meta_options[item_height][style_tablet]" value="max_height" /><?php _e('Max height','post-grid'); ?></label><br />
<input type="text" name="post_grid_meta_options[item_height][fixed_height_tablet]" value="<?php echo $items_fixed_height_tablet; ?>" />
</div>
</td>
</tr>
<tr>
<td style="padding: 0 20px 0 0">
<div class="">
<p><b>Mobile:</b>( min-width : 320px, )</p>
<label><input <?php if($items_height_style_mobile=='auto_height') echo 'checked'; ?> type="radio" name="post_grid_meta_options[item_height][style_mobile]" value="auto_height" /><?php _e('Auto height','post-grid'); ?></label><br />
<label><input <?php if($items_height_style_mobile=='fixed_height') echo 'checked'; ?> type="radio" name="post_grid_meta_options[item_height][style_mobile]" value="fixed_height" /><?php _e('Fixed height','post-grid'); ?></label><br />
<label><input <?php if($items_height_style_mobile=='max_height') echo 'checked'; ?> type="radio" name="post_grid_meta_options[item_height][style_mobile]" value="max_height" /><?php _e('Max height','post-grid'); ?></label><br />
<input type="text" name="post_grid_meta_options[item_height][fixed_height_mobile]" value="<?php echo $items_fixed_height_mobile; ?>" />
</div>
</td>
</tr>
</table>
<?php
$html = ob_get_clean();
$args = array(
'id' => 'items_height',
'title' => __('Grid item height','post-grid'),
'details' => __('Grid item height for different device, you can use % or px, em and etc, example: 80% or 250px','post-grid'),
'type' => 'custom_html',
'html' => $html,
);
$settings_tabs_field->generate_field($args, $post_id);
$args = array(
'id' => 'items_bg_color_type',
'parent' => 'post_grid_meta_options',
'title' => __('Items background color type','post-grid'),
'details' => __('Select items background color type.','post-grid'),
'type' => 'radio',
'multiple' => true,
'value' => $items_bg_color_type,
'default' => 'fixed',
'args' => array(
'fixed'=>__('Fixed','post-grid'),
),
);
$settings_tabs_field->generate_field($args, $post_id);
$args = array(
'id' => 'items_bg_color',
'parent' => 'post_grid_meta_options',
'title' => __('Grid item background color','post-grid'),
'details' => __('Set custom color for grid item.','post-grid'),
'type' => 'colorpicker',
'value' => $items_bg_color,
'default' => '',
);
$settings_tabs_field->generate_field($args, $post_id);
$args = array(
'id' => 'margin',
'parent' => 'post_grid_meta_options',
'title' => __('Grid item margin','post-grid'),
'details' => __('Grid item wrapper margin, you can use top right bottom left style, ex: 10px 15px 10px 15px','post-grid'),
'type' => 'text',
'value' => $items_margin,
'default' => '',
);
$settings_tabs_field->generate_field($args, $post_id);
$args = array(
'id' => 'item_padding',
'parent' => 'post_grid_meta_options',
'title' => __('Grid item padding','post-grid'),
'details' => __('Grid item wrapper padding, you can use top right bottom left style, ex: 10px 15px 10px 15px','post-grid'),
'type' => 'text',
'value' => $item_padding,
'default' => '',
);
$settings_tabs_field->generate_field($args, $post_id);
?>
</div>
<?php
}
add_action('post_grid_metabox_tabs_content_grid_settings', 'post_grid_metabox_tabs_content_grid_settings', 10, 2);
function post_grid_metabox_tabs_content_grid_settings($tab, $post_id){
$settings_tabs_field = new settings_tabs_field();
$class_post_grid_functions = new class_post_grid_functions();
$post_grid_posttypes_array = post_grid_posttypes_array();
$post_grid_meta_options = get_post_meta($post_id, 'post_grid_meta_options', true);
$items_width_desktop = !empty($post_grid_meta_options['width']['desktop']) ? $post_grid_meta_options['width']['desktop'] : '280px';
$items_width_tablet = !empty($post_grid_meta_options['width']['tablet']) ? $post_grid_meta_options['width']['tablet'] : '280px';
$items_width_mobile = !empty($post_grid_meta_options['width']['mobile']) ? $post_grid_meta_options['width']['mobile'] : '90%';
$grid_layout_name = !empty($post_grid_meta_options['grid_layout']['name']) ? $post_grid_meta_options['grid_layout']['name'] : 'layout_grid';
$grid_layout_col_multi = !empty($post_grid_meta_options['grid_layout']['col_multi']) ? $post_grid_meta_options['grid_layout']['col_multi'] : '2';
?>
<div class="section">
<div class="section-title">Layout settings</div>
<p class="description section-description">Customize the layout</p>
<?php
$grid_layout_args['layout_grid'] = array('name'=>'N by N', 'thumb'=> post_grid_plugin_url.'assets/admin/images/layout_grid.png', );
$grid_layout_args = apply_filters('post_grid_grid_layouts', $grid_layout_args);
$args = array(
'id' => 'name',
'parent' => 'post_grid_meta_options[grid_layout]',
'title' => __('Grid layout','post-grid'),
'details' => __('Choose grid item layout.','post-grid'),
'type' => 'radio_image',
'value' => $grid_layout_name,
'default' => '',
'width' => '100px',
'args' => $grid_layout_args,
);
$settings_tabs_field->generate_field($args);
ob_start();
?>
<div class="">
Desktop:(min-width:1024px)<br>
<input placeholder="250px or 30%" type="text" name="post_grid_meta_options[width][desktop]" value="<?php echo $items_width_desktop; ?>" />
</div>
<br>
<div class="">
Tablet:( min-width:768px )<br>
<input placeholder="250px or 30%" type="text" name="post_grid_meta_options[width][tablet]" value="<?php echo $items_width_tablet; ?>" />
</div>
<br>
<div class="">
Mobile:( min-width : 320px, )<br>
<input placeholder="250px or 30%" type="text" name="post_grid_meta_options[width][mobile]" value="<?php echo $items_width_mobile; ?>" />
</div>
<?php
$html = ob_get_clean();
$args = array(
'id' => 'skins',
'title' => __('Grid item width','post-grid'),
'details' => __('Grid item width for different device, you can use % or px, em and etc, example: 80% or 250px','post-grid'),
'type' => 'custom_html',
'html' => $html,
);
$settings_tabs_field->generate_field($args, $post_id);
?>
</div>
<?php
}
add_action('post_grid_metabox_tabs_content_grid', 'post_grid_metabox_tabs_content_grid', 10, 2);
function post_grid_metabox_tabs_content_grid($tab, $post_id){
$settings_tabs_field = new settings_tabs_field();
$post_grid_meta_options = get_post_meta($post_id, 'post_grid_meta_options', true);
?>
<div class="section">
<div class="section-title">Grid Settings</div>
<p class="description section-description">Customize the Grid.</p>
<?php
?>
</div>
<?php
}
add_action('post_grid_metabox_tabs_content_pagination', 'post_grid_metabox_tabs_content_pagination', 10, 2);
function post_grid_metabox_tabs_content_pagination($tab, $post_id){
$settings_tabs_field = new settings_tabs_field();
$post_grid_meta_options = get_post_meta($post_id, 'post_grid_meta_options', true);
$pagination_type = !empty($post_grid_meta_options['nav_bottom']['pagination_type']) ? $post_grid_meta_options['nav_bottom']['pagination_type'] : 'normal';
$max_num_pages = !empty($post_grid_meta_options['pagination']['max_num_pages']) ? $post_grid_meta_options['pagination']['max_num_pages'] : '0';
$prev_text = !empty($post_grid_meta_options['pagination']['prev_text']) ? $post_grid_meta_options['pagination']['prev_text'] : __('« Previous','post-grid');
$next_text = !empty($post_grid_meta_options['pagination']['next_text']) ? $post_grid_meta_options['pagination']['next_text'] : __('Next »','post-grid');
$font_size = !empty($post_grid_meta_options['pagination']['font_size']) ? $post_grid_meta_options['pagination']['font_size'] : '16px';
$font_color = !empty($post_grid_meta_options['pagination']['font_color']) ? $post_grid_meta_options['pagination']['font_color'] : '#fff';
$bg_color = !empty($post_grid_meta_options['pagination']['bg_color']) ? $post_grid_meta_options['pagination']['bg_color'] : '#646464';
$active_bg_color = !empty($post_grid_meta_options['pagination']['active_bg_color']) ? $post_grid_meta_options['pagination']['active_bg_color'] : '#4b4b4b';
?>
<div class="section">
<div class="section-title">Pagination Settings</div>
<p class="description section-description">Customize the pagination.</p>
<?php
$pagination_types = apply_filters('post_grid_pagination_types', array(
'none'=>__('None','post-grid'),
'normal'=>__('Normal Pagination','post-grid'),
)
);
$args = array(
'id' => 'pagination_type',
'parent' => 'post_grid_meta_options[nav_bottom]',
'title' => __('Pagination type','post-grid'),
'details' => __('Select pagination you want to display.','post-grid'),
'type' => 'radio',
'multiple' => true,
'value' => $pagination_type,
'default' => 'inline',
'args' => $pagination_types,
);
$settings_tabs_field->generate_field($args, $post_id);
$args = array(
'id' => 'max_num_pages',
'parent' => 'post_grid_meta_options[pagination]',
'title' => __('Max number of pagination','post-grid'),
'details' => __('Display max number of pagination item, default: 0','post-grid'),
'type' => 'text',
'value' => $max_num_pages,
'default' => 0,
// 'conditions' => array(
// 'field' => 'post_grid_meta_options','value' => 'normal','type' => '='
// )
);
$settings_tabs_field->generate_field($args, $post_id);
$args = array(
'id' => 'prev_text',
'parent' => 'post_grid_meta_options[pagination]',
'title' => __('Previous text','post-grid'),
'details' => __('Custom text for previous page','post-grid'),
'type' => 'text',
'value' => $prev_text,
'default' => '',
'placeholder' => '« Previous',
);
$settings_tabs_field->generate_field($args, $post_id);
$args = array(
'id' => 'next_text',
'parent' => 'post_grid_meta_options[pagination]',
'title' => __('Next text','post-grid'),
'details' => __('Custom text for next page','post-grid'),
'type' => 'text',
'value' => $next_text,
'default' => '',
'placeholder' => 'Next »',
);
$settings_tabs_field->generate_field($args, $post_id);
$args = array(
'id' => 'font_size',
'parent' => 'post_grid_meta_options[pagination]',
'title' => __('Font size','post-grid'),
'details' => __('Custom font size for pagination','post-grid'),
'type' => 'text',
'value' => $font_size,
'default' => '16px',
'placeholder' => '16px',
);
$settings_tabs_field->generate_field($args, $post_id);
$args = array(
'id' => 'font_color',
'parent' => 'post_grid_meta_options[pagination]',
'title' => __('Text or link color','post-grid'),
'details' => __('Set custom text or link color.','post-grid'),
'type' => 'colorpicker',
'value' => $font_color,
'default' => '#ddd',
);
$settings_tabs_field->generate_field($args, $post_id);
$args = array(
'id' => 'bg_color',
'parent' => 'post_grid_meta_options[pagination]',
'title' => __('Default background color','post-grid'),
'details' => __('Set custom background color.','post-grid'),
'type' => 'colorpicker',
'value' => $bg_color,
'default' => '#ddd',
);
$settings_tabs_field->generate_field($args, $post_id);
$args = array(
'id' => 'active_bg_color',
'parent' => 'post_grid_meta_options[pagination]',
'title' => __('Active or hover background color','post-grid'),
'details' => __('Set custom background color.','post-grid'),
'type' => 'colorpicker',
'value' => $active_bg_color,
'default' => '#ddd',
);
$settings_tabs_field->generate_field($args, $post_id);
?>
</div>
<?php
}
add_action('post_grid_metabox_tabs_content_search', 'post_grid_metabox_tabs_content_search', 10, 2);
function post_grid_metabox_tabs_content_search($tab, $post_id){
$class_post_grid_functions = new class_post_grid_functions();
$settings_tabs_field = new settings_tabs_field();
$post_grid_meta_options = get_post_meta($post_id, 'post_grid_meta_options', true);
$nav_top_search = !empty($post_grid_meta_options['nav_top']['search']) ? $post_grid_meta_options['nav_top']['search'] : 'no';
$nav_top_search_placeholder = !empty($post_grid_meta_options['nav_top']['search_placeholder']) ? $post_grid_meta_options['nav_top']['search_placeholder'] : __('Start typing', 'post-grid');
$nav_top_search_icon = !empty($post_grid_meta_options['nav_top']['search_icon']) ? $post_grid_meta_options['nav_top']['search_icon'] : '<i class="fas fa-search"></i>';
$search_loading_icon = !empty($post_grid_meta_options['nav_top']['search_loading_icon']) ? $post_grid_meta_options['nav_top']['search_loading_icon'] : '<i class="fas fa-spinner fa-spin"></i>';
$query_order = !empty($post_grid_meta_options['nav_top']['query_order']) ? $post_grid_meta_options['nav_top']['query_order'] : 'DESC';
$query_orderby = !empty($post_grid_meta_options['nav_top']['query_orderby']) ? $post_grid_meta_options['nav_top']['query_orderby'] : array('date');
?>
<div class="section">
<div class="section-title">Search Settings</div>
<p class="description section-description">Choose option for search.</p>
<?php
$args = array(
'id' => 'search',
'parent' => 'post_grid_meta_options[nav_top]',
'title' => __('Display search form','post-grid'),
'details' => __('Display or hide search form at top.','post-grid'),
'type' => 'radio',
'value' => $nav_top_search,
'default' => 'no',
'args' => array(
'yes'=>__('Yes','post-grid'),
'no'=>__('No','post-grid'),
),
);
$settings_tabs_field->generate_field($args, $post_id);
$args = array(
'id' => 'search_placeholder',
'parent' => 'post_grid_meta_options[nav_top]',
'title' => __('Placeholder text','post-grid'),
'details' => __('Custom text for search input field','post-grid'),
'type' => 'text',
'value' => $nav_top_search_placeholder,
'default' => __('Start typing', 'post-grid'),
);
$settings_tabs_field->generate_field($args, $post_id);
$args = array(
'id' => 'search_icon',
'parent' => 'post_grid_meta_options[nav_top]',
'title' => __('Search icon','post-grid'),
'details' => __('Custom icon for search input field, you can use <a target="_blank" href="https://fontawesome.com/icons">fontawesome</a> icons.','post-grid'),
'type' => 'text',
'value' => $nav_top_search_icon,
'default' => '<i class="fas fa-search"></i>',
);
$settings_tabs_field->generate_field($args, $post_id);
$args = array(
'id' => 'search_loading_icon',
'parent' => 'post_grid_meta_options[nav_top]',
'title' => __('Loading icon','post-grid'),
'details' => __('Custom icon for search input field, you can use <a target="_blank" href="https://fontawesome.com/icons">fontawesome</a> icons.','post-grid'),
'type' => 'text',
'value' => $search_loading_icon,
'default' => '<i class="fas fa-spinner fa-spin"></i>',
);
$settings_tabs_field->generate_field($args, $post_id);
$args = array(
'id' => 'query_order',
'parent' => 'post_grid_meta_options[nav_top]',
'title' => __('Post query order','post-grid'),
'details' => __('Query order ascending or descending.','post-grid'),
'type' => 'select',
//'for' => $taxonomy,
//'multiple' => true,
'value' => $query_order,
'default' => 'DESC',
'args' => array(
'ASC'=>__('Ascending','post-grid'),
'DESC'=>__('Descending','post-grid'),
),
);
$settings_tabs_field->generate_field($args, $post_id);
$args = array(
'id' => 'query_orderby',
'parent' => 'post_grid_meta_options[nav_top]',
'title' => __('Post query orderby','post-grid'),
'details' => __('Select post query orderby','post-grid'),
'type' => 'select2',
'multiple' => true,
'value' => $query_orderby,
'default' => array('date'),
'args' => $class_post_grid_functions->get_query_orderby(),
);
$settings_tabs_field->generate_field($args, $post_id);
?>
</div>
<?php
}
add_action('post_grid_metabox_tabs_content_masonry', 'post_grid_metabox_tabs_content_masonry', 10, 2);
function post_grid_metabox_tabs_content_masonry($tab, $post_id){
$settings_tabs_field = new settings_tabs_field();
$post_grid_meta_options = get_post_meta($post_id, 'post_grid_meta_options', true);
$masonry_enable = !empty($post_grid_meta_options['masonry_enable']) ? $post_grid_meta_options['masonry_enable'] : 'no';
?>
<div class="section">
<div class="section-title">Masonry Settings</div>
<p class="description section-description">Customize the masonry.</p>
<?php
$args = array(
'id' => 'masonry_enable',
'parent' => 'post_grid_meta_options',
'title' => __('Masonry enable','post-grid'),
'details' => __('Enable or disable masonry style grid.','post-grid'),
'type' => 'radio',
'multiple' => true,
'value' => $masonry_enable,
'default' => 'inline',
'args' => array(
'yes'=>__('Yes','post-grid'),
'no'=>__('No','post-grid'),
),
);
$settings_tabs_field->generate_field($args, $post_id);
?>
</div>
<?php
}
add_action('post_grid_metabox_tabs_content_custom_scripts', 'post_grid_metabox_tabs_content_custom_scripts', 10, 2);
function post_grid_metabox_tabs_content_custom_scripts($tab, $post_id){
$settings_tabs_field = new settings_tabs_field();
$post_grid_meta_options = get_post_meta($post_id, 'post_grid_meta_options', true);
$custom_js = !empty($post_grid_meta_options['custom_js']) ? $post_grid_meta_options['custom_js'] : '';
$custom_css = !empty($post_grid_meta_options['custom_css']) ? $post_grid_meta_options['custom_css'] : '';
?>
<div class="section">
<div class="section-title">Custom Scripts & CSS</div>
<p class="description section-description">Write your custom Scripts and CSS here.</p>
<?php
$args = array(
'id' => 'custom_js',
'parent' => 'post_grid_meta_options',
'title' => __('Custom Js.','post-grid'),
'details' => __('You can add custom scripts here, do not use <code><script> </script></code> tag','post-grid'),
'type' => 'scripts_js',
'default' => '',
'value' => $custom_js,
);
$settings_tabs_field->generate_field($args, $post_id);
?>
<?php
$args = array(
'id' => 'custom_css',
'parent' => 'post_grid_meta_options',
'title' => __('Custom CSS.','post-grid'),
'details' => __('You can add custom css here, do not use <code> <style> </style></code> tag','post-grid'),
'type' => 'scripts_css',
'value' => $custom_css,
'default' => '',
);
$settings_tabs_field->generate_field($args, $post_id);
?>
</div>
<?php
}
function post_grid_update_taxonomies_terms_by_posttypes(){
$settings_tabs_field = new settings_tabs_field();
$response = array();
//$taxonomies = array();
//if(current_user_can('manage_options')){
$post_types = isset($_POST['post_types']) ? $_POST['post_types']: array();
$grid_id = isset($_POST['grid_id']) ? $_POST['grid_id']: '';
$post_grid_meta_options = get_post_meta($grid_id, 'post_grid_meta_options', true);
$taxonomies = !empty($post_grid_meta_options['taxonomies']) ? $post_grid_meta_options['taxonomies'] : array();
$response['post_types'] = $post_types;
$post_taxonomies_arr = post_grid_get_taxonomies($post_types);
ob_start();
if(!empty($post_taxonomies_arr)):
foreach ($post_taxonomies_arr as $taxonomyIndex=>$taxonomy){
$taxonomy_term_arr = array();
$the_taxonomy = get_taxonomy($taxonomy);
$terms_relation = isset($taxonomies[$taxonomy]['terms_relation']) ? $taxonomies[$taxonomy]['terms_relation'] : 'IN';
$terms = isset($taxonomies[$taxonomy]['terms']) ? $taxonomies[$taxonomy]['terms'] : array();
$checked = isset($taxonomies[$taxonomy]['checked']) ? $taxonomies[$taxonomy]['checked'] : '';
//var_dump($terms_relation);
$taxonomy_terms = get_terms( $taxonomy, array(
'hide_empty' => false,
) );
//var_dump($taxonomy_terms);
if(!empty($taxonomy_terms))
foreach ($taxonomy_terms as $taxonomy_term){
$taxonomy_term_arr[$taxonomy_term->term_id] =$taxonomy_term->name.'('.$taxonomy_term->count.')';
}
$taxonomy_term_arr = !empty($taxonomy_term_arr) ? $taxonomy_term_arr : array();
?>
<div class="item">
<div class="header">
<span class="expand">
<i class="fas fa-expand"></i>
<i class="fas fa-compress"></i>
</span>
<label><input type="checkbox" <?php if(!empty($checked)) echo 'checked'; ?> name="post_grid_meta_options[taxonomies][<?php echo $taxonomy; ?>][checked]" value="<?php echo $taxonomy; ?>" /> <?php echo $the_taxonomy->labels->name; ?>(<?php echo $taxonomy; ?>)</label>
</div>
<div class="options">
<?php
$args = array(
'id' => 'terms',
'css_id' => 'terms-'.$taxonomyIndex,
'parent' => 'post_grid_meta_options[taxonomies]['.$taxonomy.']',
'title' => __('Categories or Terms','post-grid'),
'details' => __('Select post terms or categories','post-grid'),
'type' => 'select2',
'multiple' => true,
'value' => $terms,
'default' => array(),
'args' => $taxonomy_term_arr,
);
$settings_tabs_field->generate_field($args, $grid_id);
$args = array(
'id' => 'terms_relation',
'parent' => 'post_grid_meta_options[taxonomies]['.$taxonomy.']',
'title' => __('Terms relation','post-grid'),
'details' => __('Choose term relation.','post-grid'),
'type' => 'radio',
'for' => $taxonomy,
'multiple' => true,
'value' => $terms_relation,
'default' => 'IN',
'args' => array(
'IN'=>__('IN','post-grid'),
'NOT IN'=>__('NOT IN','post-grid'),
'AND'=>__('AND','post-grid'),
'EXISTS'=>__('EXISTS','post-grid'),
'NOT EXISTS'=>__('NOT EXISTS','post-grid'),
),
);
$settings_tabs_field->generate_field($args, $grid_id);
?>
</div>
</div>
<?php
}
else:
echo __('Please choose at least one post types. save/update post grid','post-grid');
endif;
$response['html'] = ob_get_clean();
echo json_encode( $response );
//}
die();
}
add_action('wp_ajax_post_grid_update_taxonomies_terms_by_posttypes', 'post_grid_update_taxonomies_terms_by_posttypes');