Öncelikle tema klasörünüzün altında
js klasöründe
admin.js diye bir dosya oluşturun;
benim örneğimde
wp-content/themes/twentyfourteen/js/admin.js şeklinde
var file_frame;
jQuery('#yazi-ikon-yukle').live('click', function( event ){
event.preventDefault();
// 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: 'Yazı ikon yükle',
button: {
text: 'İkon Seç',
},
multiple: false // Set to true to allow multiple files to be selected
});
// When an image is selected, run a callback.
file_frame.on( 'select', function() {
// We set multiple to false so only get one image from the uploader
attachment = file_frame.state().get('selection').first().toJSON();
// Do something with attachment.id and/or attachment.url here
jQuery('#yazi-ikon').val(attachment.url);
});
// Finally, open the modal
file_frame.open();
});içine yukarıdaki kodları yapıştırın. daha sonra
functions.php'nin en altına şu kodları ekleyin;
add_action('admin_head', function(){
$url = get_template_directory_uri() . '/js/admin.js';
echo "<script type='text/javascript' src='$url'></script>";
});
add_action('add_meta_boxes', function(){
add_meta_box('yazi-ikon-mb', 'Yazı ikonu', 'yazi_ikon_cb', 'post');
});
function yazi_ikon_cb( $post ) {
wp_nonce_field('myplugin_meta_box', 'myplugin_meta_box_nonce');
$value = get_post_meta( $post->ID, 'yazi_ikon', true );
echo '<label style="display:block" for="yazi-ikon">Yazı ikonu</label>';
if(trim($value))
echo "<img src='". esc_attr( $value ) ."' style='display:block;' />";
echo '<input style="width:70%" type="text" id="yazi-ikon" name="yazi-ikon" value="' . esc_attr( $value ) . '" size="25" />';
echo '<input style="margin-left:10px" class="button button-primary button-large" type="button" id="yazi-ikon-yukle" value="Yazı ikonu yükle" />';
}
add_action('save_post', function( $post_id ) {
/*
* We need to verify this came from our screen and with proper authorization,
* because the save_post action can be triggered at other times.
*/
// Check if our nonce is set.
if ( ! isset( $_POST['myplugin_meta_box_nonce'] ) ) {
return;
}
// Verify that the nonce is valid.
if ( ! wp_verify_nonce( $_POST['myplugin_meta_box_nonce'], 'myplugin_meta_box' ) ) {
return;
}
// If this is an autosave, our form has not been submitted, so we don't want to do anything.
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
return;
}
// Check the user's permissions.
if ( isset( $_POST['post_type'] ) && 'page' == $_POST['post_type'] ) {
if ( ! current_user_can( 'edit_page', $post_id ) ) {
return;
}
} else {
if ( ! current_user_can( 'edit_post', $post_id ) ) {
return;
}
}
/* OK, it's safe for us to save the data now. */
// Make sure that it is set.
if ( ! isset( $_POST['yazi-ikon'] ) ) {
return;
}
// Sanitize user input.
$my_data = sanitize_text_field( $_POST['yazi-ikon'] );
// Update the meta field in the database.
update_post_meta( $post_id, 'yazi_ikon', $my_data );
});daha sonra admin panelinden post düzenleme yada yeni post oluşturma sayfasına girdiğinizde yeni bir kutu gelmiş olucak;
Yazı ikonu yükle butonuna basıp açılan pencereden istediğinizi ikon yükleyip yada yüklenmiş resimlerden seçip İkon Seç'e basın;
daha sonra postu kaydettiğinizde, şu şekilde kaydedilmiş olucak;
daha sonra ikonu göstermek istediğiniz yere şöyle bir kod parçacığı eklemeniz gerekmekte;
$ikon = get_post_meta( $post->ID, 'yazi_ikon', true );
if($ikon)
echo "<img src='{$ikon}' width='50' height='43'/>";istediğiniz şekilde özelleştirebilirsiniz, örneğin ben boyutunu 50x43 şeklinde ayarladım.
Örnek olarak WordPress'in kendi temalarından twentyfourteen'e eklemek için;
wp-content/themes/twentyfourteen/content.php 'de 24. satırdan sonra yukarıdaki kod parçacığını ekleyin ve
wp-content/themes/twentyfourteen/style.css'in sonuna şu css kodlarını ekleyin;
.single-post .entry-title {
display: inline;
vertical-align: middle;
}
.single-post .entry-header {
vertical-align: middle;
}Yazının içine girdiğinizde ikon şu şekilde görüncektir;