Skip to content

Instantly share code, notes, and snippets.

@sabbir1991
Created January 20, 2017 06:31
Show Gist options
  • Save sabbir1991/ad52d87b2fef6b7880fe7f61cf21fe06 to your computer and use it in GitHub Desktop.
Save sabbir1991/ad52d87b2fef6b7880fe7f61cf21fe06 to your computer and use it in GitHub Desktop.
Render and manage all SEO fields in admin user edit profile
<?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">&times;</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">&times;</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