Cómo obtener todos los archivos insertados (pero no adjuntos) a una publicación

4

¿Cómo recupero los ID de los medios sin adjuntar en mi publicación?

Tengo dos publicaciones: POST A y POST B y un archivo PDF llamado file.pdf .

He subido file.pdf a POST A pero también lo inserté en POST B .

Ahora file.pdf aún está adjunto a POST A , por lo que no puedo obtener su ID usando get_attached_media( '', $post_B_id ) .

¿Cómo puedo recuperar la lista de todos los medios utilizados en POST B , incluidos los archivos como mi archivo.pdf, sin adjuntar, insertándolos en POST B ?

    
pregunta Levi Dulstein 12.12.2017 - 15:26

3 respuestas

3

Si puedes hacer esto! ¿Es simple / fácil? Algo así como ... ¿Es rápido y escalable? Oh Dios mío no

respondido por el Tom J Nowell 12.12.2017 - 17:49
2

Puedes ejecutar una función para encontrar y extraer tu contenido multimedia en una publicación

add_action('the_content', function($content) {
    $mediaRegex = "/(src|href)=\"(.+?).(jpg|png|pdf)\"/i";
    $mediaFind = preg_match_all($mediaRegex, $content, $media);
    if (isset($media[2]) && count($media[2]) > 0)
        $content = "<pre>MEDIA WITHIN THIS PAGE: \n".print_r($media[2],true)."</pre>".$content;
    return $content;
});

Puede modificar el patrón de expresiones regulares para adaptarse mejor a su configuración. Puede hacer que la expresión regular tome los nombres de clase de los medios insertados (en lugar de las URL) y recupere los ID de los archivos adjuntos de esa manera.

Y / o si desea refinar aún más los medios encontrados, asegurándose de que estén en su biblioteca de medios, puede poner las URL de los elementos de medios de su biblioteca en una matriz:

// get the media library for comparison
$library = array();
$args = array(      
    'post_type' => 'attachment',
    //'post_mime_type' => 'image', // if theres only one
    'numberposts' => -1,
    'post_status' => null,
    'post_parent' => null,
);
$attachments = get_posts($args);
foreach ($attachments as $post)
    $library[] = wp_get_attachment_url($post->ID);

Luego escribe un código para discutir algo como in_array() para coincidencias individuales de $media[2] vs $library . Dependiendo del uso, es posible que desee agregar Wordpress Transients y envolver el fragmento de la biblioteca.

    
respondido por el David Sword 12.12.2017 - 17:49
0

no es fácil obtener una pequeña pista, código fuente para encontrar todos los usos de un archivo multimedia. WordPress crea una relación para un uso para un tipo de publicación. Pero también tiene la oportunidad de usar un archivo multimedia dentro de una galería, complementos, temas, código personalizado y más.

Núcleo, parte posterior interna

El valor predeterminado del núcleo de WordPress tiene una opción en el back-end, dentro del área de Medios. Seleccione todos los archivos 'sin adjuntar' y obtendrá una lista.

Complementoalternativo

Sinembargo,debeusarlasoluciónprincipaldearribaopensarenelusodeuncomplemento,queverifiquetodasestasdependencias,como Media Cleaner . No utilizo este complemento, pero comprueba el uso de varios archivos multimedia y le proporciona una descripción general de sus archivos multimedia.

    
respondido por el bueltge 12.12.2017 - 16:26

Lea otras preguntas en las etiquetas