Загрузка аватарки автора статьи и вывод этой аватарки

На блоге отключены коментарии и регистрация, но есть несколько авторов чьи фотографии мне нужно выводить в их статьях. Есть вот такой код который позволяет самостоятельно загружать через админ панель фото авторов.

<?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="&times;">
        </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 шт):

Автор решения: Darth KYL

в предоставленном коде есть несколько ошибок.

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="&times;">
        </span>
            </td>
        </tr>
    </table>

    <?php
}
→ Ссылка