Загрузка аватарки автора статьи и вывод этой аватарки
На блоге отключены коментарии и регистрация, но есть несколько авторов чьи фотографии мне нужно выводить в их статьях. Есть вот такой код который позволяет самостоятельно загружать через админ панель фото авторов.
<?php
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
add_action( 'show_user_profile', 'avatar_extra_fields_to_user' );
add_action( 'edit_user_profile', 'avatar_extra_fields_to_user' );
function avatar_extra_fields_to_user($user){
$default_image = plugins_url('images/no-user.png', __FILE__);
$user_img = get_user_meta( $user->ID, 'userimg', true) ;
}
?>
<h3>Extra profile information</h3>
<table class="form-table">
<tr>
<th>
<img data-src="<?php echo $default_image ?>" width="150" height="150" id="profile-user-img"
src="<?php echo ( $user_img!= "" ? $user_img : $default_image) ?>" />
</th>
<td>
<label for="userimg">Profile Image</label>
<br>
<input type="text" name="userimg" id="userimg" value="<?php echo $user_img ?>" size="50" />
<span class="profile-buttons">
<input type="button" name="submit" id="submit-photo" class="button user_image_button"
value="Select image">
<input type="button" name="submit" id="delete" class="button delete remove-user-image"
value="×">
</span>
</td>
</tr>
</table>
<?php
add_action( 'personal_options_update', 'avatar_extra_fields_to_user_save' );
add_action( 'edit_user_profile_update', 'avatar_extra_fields_to_user_save' );
function avatar_extra_fields_to_user_save($user_id){
if (!current_user_can('edit_user', $user_id))
return false;
update_user_meta($user_id, 'userimg', $_POST['userimg']);
}
function qb_avatar_admin_scripts() {
wp_enqueue_media();
wp_enqueue_script(
'user-profile-image-uploader',
plugins_url( '/js/image-uploader.js', __FILE__ ),
array( 'jquery','media-upload' ), 1.0, true
);
}
add_action( 'admin_enqueue_scripts', 'avatar_admin_scripts' );
add_filter( 'manage_users_columns', 'avatar_add_profile_photo_column', 4 );
function avatar_add_profile_photo_column( $columns ){
$num = 2; // после какой по счету колонки вставлять новую
$new_columns = array(
'profile_photo' => __('Profile Photo','profile-photo'),
);
return array_slice( $columns, 0, $num ) + $new_columns + array_slice( $columns, $num );
}
add_action( 'manage_users_custom_column', 'avatar_fill_photo_column', 10, 3);
function avatar_fill_photo_column( $val, $colname, $user_id ){
$default_image = plugins_url('images/no-user.png', __FILE__);
$user_img = get_user_meta( $user_id, 'userimg', 1 );
if( $colname === 'profile_photo' ){
return '<img src="'.(empty($user_img)? $default_image : $user_img ).'" width="50">';
}
}
?>
К этому файлу подключен скрипт которые отвечает за загрузку изображения
(function($) {
var defaultImg = $('#profile-user-img').attr('data-src');
$('.user_image_button').on('click', function(event) {
var image = wp.media({
title: 'Upload Image',
multiple: false
}).open()
.on('select', function(e) {
var uploaded_image = image.state().get('selection').first();
console.log(uploaded_image);
var image_url = uploaded_image.toJSON().url;
$('#userimg').val(image_url);
$('#profile-user-img').attr('src', image_url);
});
return false;
});
$('.remove-user-image').on('click', function(event) {
$('#userimg').val('');
$('#profile-user-img').attr('src', defaultImg);
});
})(jQuery);
По итогу у меня перестал работать файловый менеджер Wordpress и не распознаеться переменная конкретно в одной строке <input type="text" name="userimg" id="userimg" value="<?php echo $user_img ?>" size="50" />
Помогите пожалуйста понять в чем проблема
Ответы (1 шт):
в предоставленном коде есть несколько ошибок.
1)не правильно назван калбек для подключения скриптов вместо
add_action( 'admin_enqueue_scripts', 'avatar_admin_scripts' );
должно быть
add_action( 'admin_enqueue_scripts', 'qb_avatar_admin_scripts' );
2)вы слишком рано закрываете функцию avatar_extra_fields_to_user
она должна быть такого вида
function avatar_extra_fields_to_user($user){
$default_image = plugins_url('images/no-user.png', __FILE__);
$user_img = get_user_meta( $user->ID, 'userimg', true) ;
?>
<h3>Extra profile information</h3>
<table class="form-table">
<tr>
<th>
<img data-src="<?php echo $default_image ?>" width="150" height="150" id="profile-user-img"
src="<?php echo ( $user_img!= "" ? $user_img : $default_image) ?>" />
</th>
<td>
<label for="userimg">Profile Image</label>
<br>
<input type="text" name="userimg" id="userimg" value="<?php echo $user_img ?>" size="50" />
<span class="profile-buttons">
<input type="button" name="submit" id="submit-photo" class="button user_image_button"
value="Select image">
<input type="button" name="submit" id="delete" class="button delete remove-user-image"
value="×">
</span>
</td>
</tr>
</table>
<?php
}