Created
January 20, 2017 06:31
-
-
Save sabbir1991/ad52d87b2fef6b7880fe7f61cf21fe06 to your computer and use it in GitHub Desktop.
Render and manage all SEO fields in admin user edit profile
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
add_action( 'dokan_seller_meta_fields', 'dokan_load_store_seo_field_in_admin', 10 ); | |
add_action( 'dokan_process_seller_meta_fields', 'dokan_process_seller_seo_data', 10 ); | |
function dokan_load_store_seo_field_in_admin( $user ) { | |
$seo = new Dokan_Pro_Store_Seo(); | |
$seller_profile = dokan_get_store_info( $user->ID ); | |
$seo_meta = isset( $seller_profile['store_seo'] ) ? $seller_profile['store_seo'] : array(); | |
$default_store_seo = array( | |
'dokan-seo-meta-title' => false, | |
'dokan-seo-meta-desc' => false, | |
'dokan-seo-meta-keywords' => false, | |
'dokan-seo-og-title' => false, | |
'dokan-seo-og-desc' => false, | |
'dokan-seo-og-image' => false, | |
'dokan-seo-twitter-title' => false, | |
'dokan-seo-twitter-desc' => false, | |
'dokan-seo-twitter-image' => false, | |
); | |
$seo_meta = wp_parse_args( $seo_meta, $default_store_seo ); | |
$og_image = $seo_meta['dokan-seo-og-image'] ? $seo_meta['dokan-seo-og-image'] : 0; | |
$og_image_url = $og_image ? wp_get_attachment_thumb_url( $og_image ) : ''; | |
$twitter_image = $seo_meta['dokan-seo-twitter-image'] ? $seo_meta['dokan-seo-twitter-image'] : 0; | |
$twitter_image_url = $twitter_image ? wp_get_attachment_thumb_url( $twitter_image ) : ''; | |
?> | |
<tr> | |
<th><?php _e( 'Store SEO Options', 'dokan' ); ?></th> | |
</tr> | |
<tr> | |
<th><?php _e( 'SEO Title', 'dokan' ); ?></th> | |
<td> | |
<input id="dokan-seo-meta-title" value="<?php echo $seo->print_saved_meta( $seo_meta['dokan-seo-meta-title'] ) ?>" name="dokan_seo[dokan-seo-meta-title]" placeholder=" " class="regular-text" type="text"> | |
</td> | |
</tr> | |
<tr> | |
<th><?php _e( 'Meta Description', 'dokan' ); ?></th> | |
<td> | |
<textarea class="regular-text" rows="3" id="dokan-seo-meta-desc" name="dokan_seo[dokan-seo-meta-desc]"><?php echo $seo->print_saved_meta( $seo_meta['dokan-seo-meta-desc'] ) ?></textarea> | |
</td> | |
</tr> | |
<tr> | |
<th><?php _e( 'Meta Keywords', 'dokan' ); ?></th> | |
<td> | |
<input id="dokan-seo-meta-keywords" value="<?php echo $seo->print_saved_meta( $seo_meta['dokan-seo-meta-keywords'] ) ?>" name="dokan_seo[dokan-seo-meta-keywords]" placeholder=" " class="regular-text" type="text"> | |
</td> | |
</tr> | |
<tr> | |
<th><?php _e( 'Facebook Title', 'dokan' ); ?></th> | |
<td> | |
<input id="dokan-seo-og-title" value="<?php echo $seo->print_saved_meta( $seo_meta['dokan-seo-og-title'] ) ?>" name="dokan_seo[dokan-seo-og-title]" placeholder=" " class="regular-text" type="text"> | |
</td> | |
</tr> | |
<tr> | |
<th><?php _e( 'Facebook Description', 'dokan' ); ?></th> | |
<td> | |
<textarea class="regular-text" rows="3" id="dokan-seo-og-desc" name="dokan_seo[dokan-seo-og-desc]"><?php echo $seo->print_saved_meta( $seo_meta['dokan-seo-og-desc'] ) ?></textarea> | |
</td> | |
</tr> | |
<tr> | |
<th><?php _e( 'Facebook Image', 'dokan' ); ?></th> | |
<td> | |
<div class="dokan-w5 dokan-gravatar dokan-seo-image"> | |
<div class="dokan-left gravatar-wrap<?php echo $og_image ? '' : ' dokan-hide'; ?>"> | |
<input type="hidden" class="dokan-file-field" value="<?php echo $og_image; ?>" name="dokan_seo[dokan-seo-og-image]"> | |
<img class="dokan-gravatar-img" src="<?php echo esc_url( $og_image_url ); ?>"> | |
<a class="dokan-close dokan-remove-gravatar-image">×</a> | |
</div> | |
<div class="gravatar-button-area <?php echo $og_image ? ' dokan-hide' : ''; ?>"> | |
<a href="#" class="dokan-gravatar-drag button button-default"><i class="fa fa-cloud-upload"></i> <?php _e( 'Upload Photo', 'dokan' ); ?></a> | |
</div> | |
</div> | |
</td> | |
</tr> | |
<tr> | |
<th><?php _e( 'Twitter Title', 'dokan' ); ?></th> | |
<td> | |
<input id="dokan-seo-twitter-title" value="<?php echo $seo->print_saved_meta( $seo_meta['dokan-seo-twitter-title'] ) ?>" name="dokan_seo[dokan-seo-twitter-title]" placeholder=" " class="regular-text" type="text"> | |
</td> | |
</tr> | |
<tr> | |
<th><?php _e( 'Twitter Description', 'dokan' ); ?></th> | |
<td> | |
<textarea class="regular-text" rows="3" id="dokan-seo-twitter-desc" name="dokan_seo[dokan-seo-twitter-desc]"><?php echo $seo->print_saved_meta( $seo_meta['dokan-seo-twitter-desc'] ) ?></textarea> | |
</td> | |
</tr> | |
<tr> | |
<th><?php _e( 'Twitter Image', 'dokan' ); ?></th> | |
<td> | |
<div class="dokan-w5 dokan-gravatar dokan-seo-image"> | |
<div class="dokan-left gravatar-wrap<?php echo $twitter_image ? '' : ' dokan-hide'; ?>"> | |
<input type="hidden" class="dokan-file-field" value="<?php echo $twitter_image; ?>" name="dokan_seo[dokan-seo-twitter-image]"> | |
<img class="dokan-gravatar-img" src="<?php echo esc_url( $twitter_image_url ); ?>"> | |
<a class="dokan-close dokan-remove-gravatar-image">×</a> | |
</div> | |
<div class="gravatar-button-area <?php echo $twitter_image ? ' dokan-hide' : ''; ?>"> | |
<a href="#" class="dokan-gravatar-drag button button-default"><i class="fa fa-cloud-upload"></i> <?php _e( 'Upload Photo', 'dokan' ); ?></a> | |
</div> | |
</div> | |
</td> | |
</tr> | |
<style> | |
.dokan-seo-image { | |
position: relative; | |
} | |
.dokan-seo-image .dokan-remove-gravatar-image { | |
position: absolute; | |
width: 150px; | |
height: 150px; | |
background: #000; | |
top: 0; | |
left: 0; | |
opacity: .7; | |
font-size: 70px; | |
text-align: center; | |
color: #f00; | |
padding-top: 18px; | |
cursor: pointer; | |
display: none; | |
border-radius: 0%; | |
box-sizing: border-box; | |
} | |
.dokan-seo-image .gravatar-wrap .dokan-gravatar-img { | |
border-radius: 0%; | |
height: 150px !important; | |
width: 150px; | |
} | |
.dokan-seo-image:hover .dokan-remove-gravatar-image { | |
display: block; | |
} | |
</style> | |
<script> | |
;( function($) { | |
var Dokan_Admin_Seo_Settings = { | |
init: function() { | |
$('a.dokan-gravatar-drag').on('click', this.simpleImageUpload); | |
$('a.dokan-remove-gravatar-image').on('click', this.removeGravatar); | |
}, | |
simpleImageUpload : function(e) { | |
e.preventDefault(); | |
var file_frame, | |
self = $(this); | |
// If the media frame already exists, reopen it. | |
if ( file_frame ) { | |
file_frame.open(); | |
return; | |
} | |
// Create the media frame. | |
file_frame = wp.media.frames.file_frame = wp.media({ | |
title: jQuery( this ).data( 'uploader_title' ), | |
button: { | |
text: jQuery( this ).data( 'uploader_button_text' ) | |
}, | |
multiple: false | |
}); | |
// When an image is selected, run a callback. | |
file_frame.on( 'select', function() { | |
var attachment = file_frame.state().get('selection').first().toJSON(); | |
var wrap = self.closest('.dokan-gravatar'); | |
wrap.find('input.dokan-file-field').val(attachment.id); | |
wrap.find('img.dokan-gravatar-img').attr('src', attachment.url); | |
self.parent().siblings('.gravatar-wrap', wrap).removeClass('dokan-hide'); | |
self.parent('.gravatar-button-area').addClass('dokan-hide'); | |
}); | |
// Finally, open the modal | |
file_frame.open(); | |
}, | |
removeGravatar: function(e) { | |
e.preventDefault(); | |
var self = $(this); | |
var wrap = self.closest('.gravatar-wrap'); | |
var instruction = wrap.siblings('.gravatar-button-area'); | |
wrap.find('input.dokan-file-field').val('0'); | |
wrap.addClass('dokan-hide'); | |
instruction.removeClass('dokan-hide'); | |
} | |
}; | |
Dokan_Admin_Seo_Settings.init(); | |
})(jQuery); | |
</script> | |
<?php | |
} | |
function dokan_process_seller_seo_data( $user_id ){ | |
if ( !is_user_logged_in() ) { | |
return; | |
} | |
if ( empty( $_POST['dokan_seo'] ) ) { | |
return; | |
} | |
$default_store_seo = array( | |
'dokan-seo-meta-title' => false, | |
'dokan-seo-meta-desc' => false, | |
'dokan-seo-meta-keywords' => false, | |
'dokan-seo-og-title' => false, | |
'dokan-seo-og-desc' => false, | |
'dokan-seo-og-image' => false, | |
'dokan-seo-twitter-title' => false, | |
'dokan-seo-twitter-desc' => false, | |
'dokan-seo-twitter-image' => false, | |
); | |
$seller_profile = dokan_get_store_info( $user_id ); | |
$seller_profile['store_seo'] = wp_parse_args( (array)$_POST['dokan_seo'], $default_store_seo ); | |
update_user_meta( $user_id, 'dokan_profile_settings', $seller_profile ); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment