Estoy creando un sitio web de béisbol con múltiples autores. Por experiencia pasada, no importa qué tan bien conozca a alguien personalmente, no significa que siga o incluso lea sus instrucciones.
Dicho esto, me gustaría exigir que cualquier imagen que un Autor decida "Usar como imagen destacada" tenga un mínimo de 640 px de ancho y un mínimo de 360 px de alto.
He requerido que cada publicación tenga una imagen destacada usando el complemento WyPiekacz ; la publicación no se publicará sin una imagen destacada. He bloqueado la capacidad de un autor para hacer un enlace directo a otro sitio eliminando la pestaña "De URL" en Agregar medios usando el código de Bainternet.
Ahora necesito exigir que cualquier imagen utilizada como imagen destacada sea de al menos 640 px por 360 px. No soy un codificador, pero he estado jugando e intentando usar el código de Maor Barazany como punto de partida, pero fue en vano. Su código fuerza dimensiones mínimas para cualquier imagen que se carga .
fuente
Respuestas:
bueno si estás usando el complemento WyPiekacz; como dijiste para comprobar que la imagen destacada está cargada, puedes modificarla un poco para comprobar que si hay una imagen destacada es de dimensiones mínimas según lo requerido.
Puede cambiar el código anterior en wypiekacz.php a,
bueno, no entiendo lo que quieres decir con "pestaña Biblioteca de medios".
fuente
list($url, $width, $height) = wp_get_attachment_image_src($post_id, 'full');
cambiado alist($url, $width, $height) = wp_get_attachment_image_src(get_post_thumbnail_id( $post->ID ), "Full"); echo $imgsrc[0];
para verificar las dimensiones de solo la Imagen destacada y no todas las imágenes adjuntas.Revisé el núcleo y aparentemente hay poco espacio para maniobrar.
/wp-admin/includes/media.php es donde se generan las pestañas Agregar medios
La función get_media_item en la línea 1034 es la que representa los archivos adjuntos / tabla de medios. No puedo ver ningún filtro disponible en él o las funciones anteriores que llaman a este.
Algunas referencias y ejemplos de código sobre el tema.
Supongo que una solución alternativa sería cambiar el título de las imágenes cargadas y agregar sus dimensiones. No estoy seguro de cambiar el post_title de un archivo cargado, pero se puede cambiar el nombre del archivo con estos dos filtros: sanitize_file_name y wp_handle_upload_prefilter
fuente
No es una respuesta completa y no para la recompensa, solo una prueba de que el concepto básico funciona:
Solo un snippet de 60 segundos y tiene un gran problema: esto se disparará por cada carga, y no solo si alguien está dispuesto a agregar una imagen destacada, porque no tenemos una forma de obtener el contexto del cargador de imágenes. Hay algunas formas de solucionarlo, básicamente con alguna manipulación de js.
Debería estar trabajando ahora mismo, y no tengo tiempo para experimentar con él. Pero quería ayudar tanto como pudiera, y tal vez este es un punto de partida para otros.
salud
fuente
Esta no es la respuesta más elegante ... ¡pero funciona! El complemento 'WyPiekacz', aunque interesante, no se ha actualizado en tres años.
La solución más elegante con la mejor experiencia de usuario usaría JavaScript para manejar esto tanto para la Edición rápida como para la página de edición posterior. Luego, para la buena suerte, agregaría algo al
update_post_metadata
filtro (que funciona totalmente para prevenir la imagen presentada pero no dará una advertencia ya que se ejecuta con AJAX).Los avisos de administrador no se mostrarán porque WordPress redirige, e incluso entonces no aparecerían en una Edición rápida (mi método muestra una advertencia en Edición rápida aunque no tiene estilo).
fuente
Aquí hay una forma de asegurarse de que haya una miniatura del tamaño adecuado antes de mostrarla.
Primero, cree esta función auxiliar:
Entonces ahora puede verificar antes de mostrar la miniatura de la publicación:
fuente
Esto hará lo que necesites :)
Está usando get_the_post_thumbnail que también puede ayudarlo, por lo que no necesitó crear un montón de código fn que WordPress ya puede manejar por usted, solo un pensamiento.
Esto se usa
$thumbnails = get_posts(array('numberposts'=>1,'orderby'=>'rand','meta_key' => '_thumbnail_id'));
para tomar uno aleatorio si no hay uno presente, esto puede ayudarlo a avanzar.Este bit se da
echo get_the_post_thumbnail($thumbnail->ID, 'small-thumb', array( 'alt' => esc_attr( $post->post_title ), 'title' => esc_attr( $post->post_title ) ));
cuenta de'small-thumb'
que coincide con los add_image_size fn's que reunimos en algunas líneas. Entonces, si tuvieraadd_image_size( 'small-square', 100, 100, true );
, podría llamar'small-square'
alternativamente.Salud
fuente