Pregunta

Estoy implementando un meta cuadro personalizado que permite al usuario agregar imágenes a través de un campo de entrada de archivo simple (basado en el código en este sitio: Script meta box). Este código permite agregar varias imágenes como archivos adjuntos a la página y lo hace sin el cuadro de diálogo de carga completa, solo selecciona el archivo de imagen y publica la página y la imagen está cargada. Esto funciona muy bien, sin embargo, me gustaría poder agregar un enlace en cada imagen para que pueda establecer una imagen como imagen destacada.

Aquí hay una imagen que muestra cómo se ve esto:Image thumbnails with links

Spusé el cargador de imágenes estándar y puedo ver que hay un archivo js (/wp-admin/js/set-post-thumbnail.js) que se desencadena como una llamada Ajax y esto establece la imagen como una imagen destacada. Estoy usando el siguiente código (Echo'd por PHP, por lo tanto, el escape) para agregar el enlace 'Usar como imagen destacada':

<script type=\"text/javascript\" src=\"/wp-admin/js/set-post-thumbnail.js\"></script>
<a class=\"wp-post-thumbnail\" id=\"wp-post-thumbnail-1915\" href=\"javascript:void(0)\" onclick=\"WPSetAsThumbnail(&quot;{$att->ID}&quot;, &quot;{$nonce}&quot;);return false;\">Use as featured image</a>

Me enteré mucho con un poco de prueba y error, pero no funciona a medida que recibo un error Uncaught ReferenceError: setPostThumbnailL10n is not defined, esto se debe a que no tengo JS cargado que proporcione el setPostThumbnailL10n ¡Y probablemente otros problemas también!

Básicamente, estoy tratando de averiguar si es factible aprovechar esta funcionalidad incorporada fácilmente. Mi otra opción es rodar mi propia JS, lo que guarda una imagen como se muestra en su lugar. También requeriré poder desastar una imagen como se presenta también. ¡Cualquier idea muy bienvenida, ya que esto parece un poco de territorio desconocido, ya que Google, esto no ha surgido nada!

¿Fue útil?

Solución

Incluso si hubiera incluido todos los archivos necesarios, aún tendrá que crear algunos campos ocultos adicionales como _nonce para pasar el

check_ajax_referer( "set_post_thumbnail-$post_ID" );

También necesitaría crear un campo oculto de acción para identificar el caso de la llamada AJAX con el valor: "set-post-thumbnail"

Es mejor crear su propia llamada Ajax y simplemente usar en su función de devolución de llamada:

    set_post_thumbnail( $post, $thumbnail_id );
//or
    update_post_meta( $post->ID, '_thumbnail_id', $attachment_id );

y para usar desastrado

delete_post_meta( $post_ID, '_thumbnail_id' );
Licenciado bajo: CC-BY-SA con atribución
scroll top