Как поместить часть php — кода в шорткод wordpress

#php #html #wordpress #shortcode

#php #HTML #wordpress #короткий код

Вопрос:

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

Я относительно новичок в php, я знаю, как запустить шорткод для wordpress, но я не знаю, как структурировать шорткод для размещения php. Кто-нибудь будет настолько любезен, чтобы дать мне совет?

Приведенный ниже код php является оригиналом файла плагина:

 lt;?php /**  * Defines all profile and upload settings.  *  * @package One User Avatar  * @author Bangbay Siboliban  * @author Flippercode  * @author ProfilePress  * @author One Designs  * @copyright 2013-2014 Bangbay Siboliban  * @copyright 2014-2020 Flippercode  * @copyright 2020-2021 ProfilePress  * @copyright 2021 One Designs  * @version 2.3.9  */  class WP_User_Avatar {  /**  * Constructor  * @since 1.8  * @uses string $pagenow  * @uses bool $show_avatars  * @uses object $wpua_admin  * @uses bool $wpua_allow_upload  * @uses add_action()  * @uses add_filterI]()  * @uses is_admin()  * @uses is_user_logged_in()  * @uses wpua_is_author_or_above()  * @uses wpua_is_menu_page()  */  public function __construct() {  global $pagenow, $show_avatars, $wpua_admin, $wpua_allow_upload;   // Add WPUA to profile for users with permission  if ( $this-gt;wpua_is_author_or_above() || ( 1 == (bool) $wpua_allow_upload amp;amp; is_user_logged_in() ) ) {  // Profile functions and scripts  add_action( 'show_user_profile', array( $this, 'wpua_maybe_show_user_profile' ) );  add_action( 'edit_user_profile', array( $this, 'wpua_maybe_show_user_profile' ) );   add_action( 'personal_options_update', array( $this, 'wpua_action_process_option_update' ) );  add_action( 'edit_user_profile_update', array( $this, 'wpua_action_process_option_update' ) );   add_action( 'user_new_form', array( $this, 'wpua_action_show_user_profile' ) );  add_action( 'user_register', array( $this, 'wpua_action_process_option_update' ) );   add_filter( 'user_profile_picture_description', array( $this, 'wpua_description_show_user_profile' ), PHP_INT_MAX, 2 );   // Admin scripts  $pages = array( 'profile.php', 'options-discussion.php', 'user-edit.php', 'user-new.php', 'admin.php' );   if ( in_array( $pagenow, $pages ) || $wpua_admin-gt;wpua_is_menu_page() ) {  add_action( 'admin_enqueue_scripts', array( $this, 'wpua_media_upload_scripts' ) );  }   // Front pages  if ( ! is_admin() ) {  add_action( 'show_user_profile', array( 'wp_user_avatar', 'wpua_media_upload_scripts' ) );  add_action( 'edit_user_profile', array( 'wp_user_avatar', 'wpua_media_upload_scripts' ) );  }   if ( ! $this-gt;wpua_is_author_or_above() ) {  // Upload errors  add_action( 'user_profile_update_errors', array( $this, 'wpua_upload_errors' ), 10, 3 );   // Prefilter upload size  add_filter( 'wp_handle_upload_prefilter', array( $this, 'wpua_handle_upload_prefilter' ) );  }  }   add_filter( 'media_view_settings', array( $this, 'wpua_media_view_settings' ), 10, 1 );  }   /**  * Avatars have no parent posts  *  * @param array $settings  *  * @return array  * @uses object $post  * @uses bool $wpua_is_profile  * @uses is_admin()  * array $settings  * @since 1.8.4  */  public function wpua_media_view_settings( $settings ) {  global $post, $wpua_is_profile;   // Get post ID so not to interfere with media uploads  $post_id = is_object( $post ) ? $post-gt;ID : 0;   // Don't use post ID on front pages if there's a WPUA uploader  $settings['post']['id'] = ( ! is_admin() amp;amp; 1 == $wpua_is_profile ) ? 0 : $post_id;   return $settings;  }   /**  * Media Uploader  * @since 1.4  * @param object $user  * @uses object $current_user  * @uses string $mustache_admin  * @uses string $pagenow  * @uses object $post  * @uses bool $show_avatars  * @uses object $wp_user_avatar  * @uses object $wpua_admin  * @uses object $wpua_functions  * @uses bool $wpua_is_profile  * @uses int $wpua_upload_size_limit  * @uses get_user_by()  * @uses wp_enqueue_script()  * @uses wp_enqueue_media()  * @uses wp_enqueue_style()  * @uses wp_localize_script()  * @uses wp_max_upload_size()  * @uses wpua_get_avatar_original()  * @uses wpua_is_author_or_above()  * @uses wpua_is_menu_page()  */  public static function wpua_media_upload_scripts( $user = '' ) {  global $current_user,  $mustache_admin,  $pagenow,  $plugin_page,  $post,  $show_avatars,  $wp_user_avatar,  $wpua_force_file_uploader,  $wpua_admin,  $wpua_functions,  $wpua_is_profile,  $wpua_upload_size_limit;   // This is a profile page  $wpua_is_profile = 1;   $user = ( $pagenow == 'user-edit.php' amp;amp; isset( $_GET['user_id'] ) ) ? get_user_by( 'id', absint( $_GET['user_id'] ) ) : $current_user;   wp_enqueue_style( 'wp-user-avatar', WPUA_CSS_URL . 'wp-user-avatar.css', '', WPUA_VERSION );   wp_enqueue_script( 'jquery' );   if ( ( $wp_user_avatar-gt;wpua_is_author_or_above() amp;amp; ! $wpua_force_file_uploader ) || 'options-discussion.php' == $pagenow ) {  wp_enqueue_script( 'admin-bar' );  wp_enqueue_media( array( 'post' =gt; $post ) );  wp_enqueue_script( 'wp-user-avatar', WPUA_JS_URL . 'wp-user-avatar.js', array( 'jquery', 'media-editor' ), WPUA_VERSION, true );  } else {  wp_enqueue_script( 'wp-user-avatar', WPUA_JS_URL . 'wp-user-avatar-user.js', array( 'jquery' ), WPUA_VERSION, true );  }   // Admin scripts  if ( 'options-discussion.php' == $pagenow || $wpua_admin-gt;wpua_is_menu_page() ) {  wp_localize_script( 'wp-user-avatar', 'wpua_custom', array(  'avatar_thumb' =gt; $mustache_admin,  ) );  }   if (  'options-discussion.php' == $pagenow  ||  $wpua_admin-gt;wpua_is_menu_page()  ||  (  'admin.php' == $pagenow  amp;amp;  isset( $plugin_page )  amp;amp;  'wp-user-avatar-library' == $plugin_page  )  ) {  // Settings control  wp_enqueue_script( 'wp-user-avatar-admin', WPUA_JS_URL . 'wp-user-avatar-admin.js', array( 'wp-user-avatar' ), WPUA_VERSION, true );  wp_localize_script( 'wp-user-avatar-admin', 'wpua_admin', array(  'upload_size_limit' =gt; $wpua_upload_size_limit,  'max_upload_size' =gt; wp_max_upload_size(),  ) );  } else {  // Original user avatar  $avatar_medium_src = 1 == (bool) $show_avatars ? $wpua_functions-gt;wpua_get_avatar_original( $user-gt;user_email, 'medium' ) : includes_url() . 'images/blank.gif';   wp_localize_script( 'wp-user-avatar', 'wpua_custom', array(  'avatar_thumb' =gt; $avatar_medium_src,  ) );  }  }   public static function wpua_core_show_user_profile( $user ) {  global $blog_id,  $current_user,  $show_avatars,  $wpdb,  $wp_user_avatar,  $wpua_force_file_uploader,  $wpua_edit_avatar,  $wpua_functions,  $wpua_upload_size_limit_with_units;   $has_wp_user_avatar = has_wp_user_avatar( @$user-gt;ID );   // Get WPUA attachment ID  $wpua = get_user_meta( @$user-gt;ID, $wpdb-gt;get_blog_prefix( $blog_id ) . 'user_avatar', true );   // Show remove button if WPUA is set  $hide_remove = ! $has_wp_user_avatar ? 'wpua-hide' : '';   // Hide image tags if show avatars is off  $hide_images = ! $has_wp_user_avatar amp;amp; 0 == (bool) $show_avatars ? 'wpua-no-avatars' : '';   // If avatars are enabled, get original avatar image or show blank  $avatar_medium_src = 1 == (bool) $show_avatars ? $wpua_functions-gt;wpua_get_avatar_original( @$user-gt;user_email, 'medium' ) : includes_url() . 'images/blank.gif';   // Check if user has wp_user_avatar, if not show image from above  $avatar_medium = $has_wp_user_avatar ? get_wp_user_avatar_src( $user-gt;ID, 'medium' ) : $avatar_medium_src;   // Check if user has wp_user_avatar, if not show image from above  $avatar_thumbnail = $has_wp_user_avatar ? get_wp_user_avatar_src( $user-gt;ID, 96 ) : $avatar_medium_src;  $edit_attachment_link = esc_url( add_query_arg( array(  'post' =gt; $wpua,  'action' =gt; 'edit',  ), admin_url( 'post.php' ) ) );  ?gt;   lt;input type="hidden" name="wp-user-avatar" id="lt;?php echo esc_attr( ( 'add-new-user' == $user ) ? 'wp-user-avatar' : 'wp-user-avatar-existing' ) ?gt;" value="lt;?php echo esc_attr( $wpua ); ?gt;" /gt;   lt;?php  if ( $wp_user_avatar-gt;wpua_is_author_or_above() amp;amp; ! $wpua_force_file_uploader ) :  // Button to launch Media Uploader  ?gt;   lt;p id="lt;?php echo esc_attr( ( 'add-new-user' == $user ) ? 'wpua-add-button' : 'wpua-add-button-existing' ); ?gt;"gt;  lt;button  type="button"  class="button"  id="lt;?php echo esc_attr( ( 'add-new-user' == $user ) ? 'wpua-add' : 'wpua-add-existing' ); ?gt;"  name="lt;?php echo esc_attr( ( 'add-new-user' == $user ) ? 'wpua-add' : 'wpua-add-existing' ); ?gt;"  data-title="lt;?php printf(  /* translators: user display name */  __( 'Choose Image: %s', 'one-user-avatar' ),  ( ! empty( $user-gt;display_name ) ? esc_attr( $user-gt;display_name ) : '' )  ); ?gt;"  gt;  lt;?php esc_html_e( 'Choose Image', 'one-user-avatar' ); ?gt;  lt;/buttongt;  lt;/pgt;   lt;?php  elseif ( ! $wp_user_avatar-gt;wpua_is_author_or_above() || $wpua_force_file_uploader ) :  // Upload button  ?gt;   lt;p id="lt;?php echo esc_attr( ( 'add-new-user' == $user ) ? 'wpua-upload-button' : 'wpua-upload-button-existing' ); ?gt;"gt;  lt;input name="wpua-file" id="lt;?php echo esc_attr( ( 'add-new-user' == $user ) ? 'wpua-file' : 'wpua-file-existing' ); ?gt;" type="file" /gt;   lt;button type="submit" class="button" id="lt;?php echo esc_attr( ( 'add-new-user' == $user ) ? 'wpua-upload' : 'wpua-upload-existing' ); ?gt;" name="submit" value="lt;?php esc_html_e( 'Upload', 'one-user-avatar' ); ?gt;"gt;  lt;?php esc_html_e( 'Upload', 'one-user-avatar' ); ?gt;  lt;/buttongt;  lt;/pgt;   lt;p id="lt;?php echo esc_attr( ( 'add-new-user' == $user ) ? 'wpua-upload-messages' : 'wpua-upload-messages-existing' ); ?gt;"gt;  lt;span id="lt;?php echo esc_attr( ( $user == 'add-new-user') ? 'wpua-max-upload' : 'wpua-max-upload-existing' ); ?gt;" class="description"gt;  lt;?php  printf(  /* translators: file size in KB */  __( 'Maximum upload file size: %s.', 'one-user-avatar' ),  esc_html( $wpua_upload_size_limit_with_units . 'KB' )  );  ?gt;  lt;/spangt;   lt;span id="lt;?php echo esc_attr( ( 'add-new-user' == $user ) ? 'wpua-allowed-files' : 'wpua-allowed-files-existing' ); ?gt;" class="description"gt;  lt;?php  printf(  /* translators: allowed file extensions */  __( 'Allowed Files: %s', 'one-user-avatar' ),  'lt;codegt;jpg jpeg png giflt;/codegt;'  );  ?gt;  lt;/spangt;  lt;/pgt;   lt;?php  endif;  ?gt;   lt;div id="lt;?php echo esc_attr( ( 'add-new-user' == $user ) ? 'wpua-images' : 'wpua-images-existing' ); ?gt;" class="lt;?php echo esc_attr( $hide_images ); ?gt;"gt;  lt;p id="lt;?php echo esc_attr( ( 'add-new-user' == $user ) ? 'wpua-preview' : 'wpua-preview-existing' ); ?gt;"gt;  lt;img src="lt;?php echo esc_url( $avatar_medium ); ?gt;" alt="lt;?php echo esc_attr( __( 'Original Size', 'one-user-avatar' ) ); ?gt;" /gt;   lt;span class="description"gt;lt;?php esc_html_e( 'Original Size', 'one-user-avatar' ); ?gt;lt;/spangt;  lt;/pgt;   lt;p id="lt;?php echo esc_attr( ( 'add-new-user' == $user ) ? 'wpua-thumbnail' : 'wpua-thumbnail-existing' ); ?gt;"gt;  lt;img src="lt;?php echo esc_url( $avatar_thumbnail ); ?gt;" alt="lt;?php echo esc_attr( __( 'Thumbnail', 'one-user-avatar' ) ); ?gt;"/gt;   lt;span class="description"gt;lt;?php esc_html_e( 'Thumbnail', 'one-user-avatar' ); ?gt;lt;/spangt;  lt;/pgt;   lt;p id="lt;?php echo esc_attr( ( 'add-new-user' == $user ) ? 'wpua-remove-button' : 'wpua-remove-button-existing' ); ?gt;" class="lt;?php echo esc_attr( $hide_remove ); ?gt;"gt;  lt;button type="button" class="button" id="lt;?php echo esc_attr( ( 'add-new-user' == $user ) ? 'wpua-remove' : 'wpua-remove-existing' ); ?gt;" name="wpua-remove"gt;lt;?php esc_html_e( 'Remove Image', 'one-user-avatar' ); ?gt;lt;/buttongt;  lt;/pgt;   lt;p id="lt;?php echo esc_attr( ( 'add-new-user' == $user ) ? 'wpua-undo-button' : 'wpua-undo-button-existing' ); ?gt;"gt;  lt;button type="button" class="button" id="lt;?php echo esc_attr( ( 'add-new-user' == $user ) ? 'wpua-undo' : 'wpua-undo-existing' ); ?gt;" name="wpua-undo"gt;lt;?php esc_html_e( 'Undo', 'one-user-avatar' ); ?gt;lt;/buttongt;  lt;/pgt;  lt;/divgt;   lt;?php  }   /**  * Add to edit user profile  *  * @param object $user  *  * @since 1.4  * @uses int $blog_id  * @uses object $current_user  * @uses bool $show_avatars  * @uses object $wpdb  * @uses object $wp_user_avatar  * @uses bool $wpua_edit_avatar  * @uses object $wpua_functions  * @uses string $wpua_upload_size_limit_with_units  * @uses add_query_arg()  * @uses admin_url()  * @uses do_action()  * @uses get_blog_prefix()  * @uses get_user_meta()  * @uses get_wp_user_avatar_src()  * @uses has_wp_user_avatar()  * @uses is_admin()  * @uses wpua_author()  * @uses wpua_get_avatar_original()  * @uses wpua_is_author_or_above()  */  public static function wpua_action_show_user_profile( $user ) {  $is_admin = is_admin() ? '_admin' : '';   do_action( 'wpua_before_avatar' . $is_admin );   self::wpua_core_show_user_profile( $user );   do_action( 'wpua_after_avatar' . $is_admin );  }   public function wpua_maybe_show_user_profile( $user ) {  if ( is_admin() ) {  return;  }   $this-gt;wpua_action_show_user_profile( $user );  }   // setting defaults for the filter callback fixes an error like https://wordpress.org/support/topic/error-missing-argument-2-for-wp_user_avatarclosure  // see https://stackoverflow.com/questions/37779680/missing-argument-2-for-a-custom-function  public function wpua_description_show_user_profile( $description = '', $profileuser = null ) {  ob_start();   echo wp_specialchars_decode( wp_kses(  'lt;stylegt;.user-profile-picture gt; td gt; .avatar { display: none; }lt;/stylegt;',  array(  'style' =gt; array(),  )  ) );   self::wpua_core_show_user_profile( $profileuser );   return ob_get_clean();  }   /**  * Add upload error messages  * @since 1.7.1  * @param array $errors  * @param bool $update  * @param object $user  * @uses int $wpua_upload_size_limit  * @uses add()  * @uses wp_upload_dir()  */  public static function wpua_upload_errors( $errors, $update, $user ) {  global $wpua_upload_size_limit;   if ( $update amp;amp; ! empty( $_FILES['wpua-file'] ) ) {  $file = $_FILES['wpua-file'];  $size = isset( $file['size'] ) ? absint( $file['size'] ) : 0;  $type = isset( $file['type'] ) ? sanitize_mime_type( $file['type'] ) : '';   $upload_dir = wp_upload_dir();   // Allow only JPG, GIF, PNG  if ( ! empty( $type ) amp;amp; ! preg_match( '/(jpe?g|gif|png)$/i', $type ) ) {  $errors-gt;add( 'wpua_file_type', __( 'This file is not an image. Please try another.', 'one-user-avatar' ) );  }   // Upload size limit  if ( ! empty( $size ) amp;amp; $size gt; $wpua_upload_size_limit ) {  $errors-gt;add( 'wpua_file_size', __( 'Memory exceeded. Please try another smaller file.', 'one-user-avatar' ) );  }   // Check if directory is writeable  if ( ! is_writeable( $upload_dir['path'] ) ) {  $errors-gt;add( 'wpua_file_directory', sprintf(  /* translators: directory path */  __( 'Unable to create directory %s. Is its parent directory writable by the server?', 'one-user-avatar' ), $upload_dir['path']  ) );  }  }  }   /**  * Set upload size limit  * @since 1.5  * @param object $file  * @uses int $wpua_upload_size_limit  * @uses add_action()  * @return object $file  */  public function wpua_handle_upload_prefilter( $file ) {  global $wpua_upload_size_limit;   $size = absint( $file['size'] );   if ( ! empty( $size ) amp;amp; $size gt; $wpua_upload_size_limit ) {  /**  * Error handling that only appears on front pages  * @since 1.7  */  function wpua_file_size_error( $errors, $update, $user ) {  $errors-gt;add( 'wpua_file_size', __( 'Memory exceeded. Please try another smaller file.', 'one-user-avatar' ) );  }   add_action( 'user_profile_update_errors', 'wpua_file_size_error', 10, 3 );   return;  }   return $file;  }   /**  * Update user meta  * @since 1.4  * @param int $user_id  * @uses int $blog_id  * @uses object $post  * @uses object $wpdb  * @uses object $wp_user_avatar  * @uses bool $wpua_resize_crop  * @uses int $wpua_resize_h  * @uses bool $wpua_resize_upload  * @uses int $wpua_resize_w  * @uses add_post_meta()  * @uses delete_metadata()  * @uses get_blog_prefix()  * @uses is_wp_error()  * @uses update_post_meta()  * @uses update_user_meta()  * @uses wp_delete_attachment()  * @uses wp_generate_attachment_metadata()  * @uses wp_get_image_editor()  * @uses wp_handle_upload()  * @uses wp_insert_attachment()  * @uses WP_Query()  * @uses wp_read_image_metadata()  * @uses wp_reset_query()  * @uses wp_update_attachment_metadata()  * @uses wp_upload_dir()  * @uses wpua_is_author_or_above()  * @uses object $wpua_admin  * @uses wpua_has_gravatar()  */  public static function wpua_action_process_option_update( $user_id ) {  global $blog_id,  $post,  $wpdb,  $wp_user_avatar,  $wpua_force_file_uploader,  $wpua_resize_crop,  $wpua_resize_h,  $wpua_resize_upload,  $wpua_resize_w,  $wpua_admin;   // Check if user has publish_posts capability  if ( $wp_user_avatar-gt;wpua_is_author_or_above() amp;amp; ! $wpua_force_file_uploader ) {  $wpua_id = isset( $_POST['wp-user-avatar'] ) ? absint( $_POST['wp-user-avatar'] ) : 0;   // Remove old attachment postmeta  delete_metadata( 'post', null, '_wp_attachment_wp_user_avatar', $user_id, true );   // Create new attachment postmeta  add_post_meta( $wpua_id, '_wp_attachment_wp_user_avatar', $user_id );   // Update usermeta  update_user_meta( $user_id, $wpdb-gt;get_blog_prefix( $blog_id ) . 'user_avatar', $wpua_id );  } else {  // Remove attachment info if avatar is blank  if ( isset( $_POST['wp-user-avatar'] ) amp;amp; empty( $_POST['wp-user-avatar'] ) ) {  // Delete other uploads by user  $q = array(  'author' =gt; $user_id,  'post_type' =gt; 'attachment',  'post_status' =gt; 'inherit',  'posts_per_page' =gt; '-1',  'meta_query' =gt; array(  array(  'key' =gt; '_wp_attachment_wp_user_avatar',  'value' =gt; "",  'compare' =gt; '!='  ),  ),  );   $avatars_wp_query = new WP_Query( $q );   while( $avatars_wp_query-gt;have_posts() ) {  $avatars_wp_query-gt;the_post();   wp_delete_attachment( $post-gt;ID );  }   wp_reset_query();   // Remove attachment postmeta  delete_metadata( 'post', null, '_wp_attachment_wp_user_avatar', $user_id, true );   // Remove usermeta  update_user_meta( $user_id, $wpdb-gt;get_blog_prefix( $blog_id ) . 'user_avatar', '' );  }   // Create attachment from upload  if ( isset( $_POST['submit'] ) amp;amp; $_POST['submit'] amp;amp; ! empty( $_FILES['wpua-file'] ) ) {  $file = $_FILES['wpua-file'];  $name = isset( $file['name'] ) ? sanitize_file_name( $file['name'] ) : '';  $type = isset( $file['type'] ) ? sanitize_mime_type( $file['type'] ) : '';  $file = wp_handle_upload( $file, array(  'test_form' =gt; false,  ) );   if ( isset( $file['url'] ) ) {  if ( ! empty( $type ) amp;amp; preg_match( '/(jpe?g|gif|png)$/i' , $type ) ) {  // Resize uploaded image  if ( 1 == (bool) $wpua_resize_upload ) {  // Original image  $uploaded_image = wp_get_image_editor( $file['file'] );   // Check for errors  if ( ! is_wp_error( $uploaded_image ) ) {  // Resize image  $uploaded_image-gt;resize( $wpua_resize_w, $wpua_resize_h, $wpua_resize_crop );   // Save image  $uploaded_image-gt;save( $file['file'] );  }  }   // Break out file info  $name_parts = pathinfo( $name );  $name = trim( substr( $name, 0, -( 1   strlen( $name_parts['extension'] ) ) ) );  $url = $file['url'];  $file = $file['file'];  $title = $name;   // Use image exif/iptc data for title if possible  if ( $image_meta = @wp_read_image_metadata( $file ) ) {  if ( trim( $image_meta['title'] ) amp;amp; ! is_numeric( sanitize_title( $image_meta['title'] ) ) ) {  $title = $image_meta['title'];  }  }   // Construct the attachment array  $attachment = array(  'guid' =gt; $url,  'post_mime_type' =gt; $type,  'post_title' =gt; $title,  'post_content' =gt; '',  );   // This should never be set as it would then overwrite an existing attachment  if ( isset( $attachment['ID'] ) ) {  unset( $attachment['ID'] );  }   // Save the attachment metadata  $attachment_id = wp_insert_attachment( $attachment, $file );   if ( ! is_wp_error( $attachment_id ) ) {  // Delete other uploads by user  $q = array(  'author' =gt; $user_id,  'post_type' =gt; 'attachment',  'post_status' =gt; 'inherit',  'posts_per_page' =gt; '-1',  'meta_query' =gt; array(  array(  'key' =gt; '_wp_attachment_wp_user_avatar',  'value' =gt; '',  'compare' =gt; '!=',  ),  ),  );   $avatars_wp_query = new WP_Query( $q );   while ( $avatars_wp_query-gt;have_posts() ){  $avatars_wp_query-gt;the_post();   wp_delete_attachment($post-gt;ID);  }   wp_reset_query();   wp_update_attachment_metadata( $attachment_id, wp_generate_attachment_metadata( $attachment_id, $file ) );   // Remove old attachment postmeta  delete_metadata( 'post', null, '_wp_attachment_wp_user_avatar', $user_id, true );   // Create new attachment postmeta  update_post_meta( $attachment_id, '_wp_attachment_wp_user_avatar', $user_id );   // Update usermeta  update_user_meta( $user_id, $wpdb-gt;get_blog_prefix( $blog_id ) . 'user_avatar', $attachment_id );  }  }  }  }  }  }   /**  * Check attachment is owned by user  * @since 1.4  * @param int $attachment_id  * @param int $user_id  * @param bool $wpua_author  * @uses get_post()  * @return bool  */  private function wpua_author( $attachment_id, $user_id, $wpua_author = 0 ) {  $attachment = get_post( $attachment_id );   if ( ! empty( $attachment ) amp;amp; $attachment-gt;post_author == $user_id ) {  $wpua_author = true;  }   return (bool) $wpua_author;  }   /**  * Check if current user has at least Author privileges  * @since 1.8.5  * @uses current_user_can()  * @uses apply_filters()  * @return bool  */  public function wpua_is_author_or_above() {  $is_author_or_above = (  current_user_can( 'edit_published_posts' ) amp;amp;  current_user_can( 'upload_files' ) amp;amp;  current_user_can( 'publish_posts') amp;amp;  current_user_can( 'delete_published_posts')  ) ? true : false;   /**  * Filter Author privilege check  * @since 1.9.2  * @param bool $is_author_or_above  */  return (bool) apply_filters( 'wpua_is_author_or_above', $is_author_or_above );  } }  /**  * Initialize WP_User_Avatar  * @since 1.8  */ function wpua_init() {  global $wp_user_avatar;   if ( ! isset( $wp_user_avatar ) ) {  $wp_user_avatar = new WP_User_Avatar();  }   return $wp_user_avatar; } add_action( 'init', 'wpua_init' );  

Фрагмент кода, который я хочу вставить в шорткод, приведен ниже, в основном он показывает миниатюру. Я попытался структурировать шорт — код в functions.php с этим, но мне это не удалось.

 lt;p id="lt;?php echo esc_attr( ( 'add-new-user' == $user ) ? 'wpua-thumbnail' : 'wpua-thumbnail-existing' ); ?gt;"gt;lt;img src="lt;?php echo esc_url( $avatar_thumbnail ); ?gt;" alt="lt;?php echo esc_attr( __( 'Thumbnail', 'one-user-avatar' ) ); ?gt;"/gt;  lt;span class="description"gt;lt;?php esc_html_e( 'Thumbnail', 'one-user-avatar' ); ?gt;lt;/spangt; lt;/pgt;  

Вот что я сделал:

 // Shortcode to output custom PHP function demo_shortcode() { ?gt;lt;img src="lt;?php echo $avatar_thumbnail; ?gt;" alt="" /gt;lt;?php  global   $current_user,  $show_avatars,  $wpdb,  $wp_user_avatar,  $wpua_functions;   // If avatars are enabled, get original avatar image or show blank  $avatar_medium_src = 1 == (bool) $show_avatars ? $wpua_functions-gt;wpua_get_avatar_original( @$user-gt;user_email, 'medium' ) : includes_url() . 'images/blank.gif';   // Check if user has wp_user_avatar, if not show image from above  $avatar_thumbnail = $has_wp_user_avatar ? get_wp_user_avatar_src( $user-gt;ID, 96 ) : $avatar_medium_src;  return $avatar_medium_src;  }  add_shortcode('demo', 'demo_shortcode');   

Ответ №1:

Это общая функция, которую вы ищете.

Я не могу обещать, что это сработает, потому что у меня нет этого доступного плагина.

Исходная функция, на которую вы ссылаетесь, предполагает, что $user ей передается объект, но я не вижу этого в вашей реализации, поэтому я просто предположу, что текущий вошедший в систему пользователь, если они существуют.

Я вытащил все глобалы, которые смог найти. Там также есть куча функций из плагина, которые я не могу гарантировать, будут загружены/доступны, но вы должны, по крайней мере, получить сообщение об ошибке, чем.

Очевидно, переименуйте функцию так, как вам нужно.

 function stuff() {  // The first is a WordPress global, the other two are from the plugin, apparently  global $current_user, $show_avatars, $wpua_functions;   // Blindly assume we're talking about the current user  $user = $current_user;   // Call one of the plugin's functions  $has_wp_user_avatar = has_wp_user_avatar(@$user-gt;ID);   // Why "1==(boo)"? Not sure who wrote that, but I'm leaving it in.  $avatar_medium_src = 1 == (bool)$show_avatars ? $wpua_functions-gt;wpua_get_avatar_original($user-gt;user_email, 'medium') : includes_url().'images/blank.gif';   $avatar_thumbnail = $has_wp_user_avatar ? get_wp_user_avatar_src($user-gt;ID, 96) : $avatar_medium_src;  ?gt;  lt;p id="lt;?php echo esc_attr( ( 'add-new-user' == $user ) ? 'wpua-thumbnail' : 'wpua-thumbnail-existing' ); ?gt;"gt;lt;img src="lt;?php echo esc_url( $avatar_thumbnail ); ?gt;" alt="lt;?php echo esc_attr( __( 'Thumbnail', 'one-user-avatar' ) ); ?gt;"/gt;   lt;span class="description"gt;lt;?php esc_html_e( 'Thumbnail', 'one-user-avatar' ); ?gt;lt;/spangt;  lt;/pgt; lt;?php }  

Комментарии:

1. Прошло около 3 дней, пока я играл и гуглил в поисках решения, ситуация стала разочаровывающей. Ваше решение работает именно так, как я хотел. Я бесконечно благодарен вам.

2. Еще раз привет, Крис. Поскольку вы оказали огромную помощь и предоставили решение моей проблемы, не поможете ли вы мне понять, где я ошибаюсь? Я пытаюсь сделать точно то же самое, на этот раз мне нужно вернуть несколько разных шорткодов, в том числе загрузить изображение, выбрать изображение и кнопку обновления.

3. @EmanueleDaniele, у вас есть новый вопрос, на который вы можете сослаться?

4. Привет, Крис, я отредактировал сообщение. Я добавил новую проблему, с которой столкнулся, в заключительную часть поста. Есть сообщение, указывающее на ту часть, которую я редактирую.

5. @EmanueleDaniele, поскольку вы приняли ответ, обычно предпочтительным методом является открытие нового вопроса, ссылка на старый и объяснение новой проблемы, даже если это скорее обновление существующей. Это позволяет каждому по-новому взглянуть на проблему