web-dev-qa-db-fra.com

get_attached_media () sur la page de l'auteur ne fonctionne pas

J'ai un problème très ennuyant et simple.

Je peux utiliser get_attached_media () sur une page de taxonomie pour obtenir le support joint d'une publication personnalisée.

function author_loop() {

    $post = get_the_ID();

    // Where the problem lies, only on author pages. get_attached_media returns nothing.
    $attach = get_attached_media( 'application/pdf', $post );
    $attach = current( $attach );

    $attach_url = wp_get_attachment_url( $attach );

    printf( '<a href="%s">%s</a>', $attach_url, get_the_title() );

}

Mais lorsque j'utilise exactement la même fonction sur la page de l'auteur, un tableau vide est renvoyé.

J'ai passé tellement de temps à essayer de comprendre pourquoi mais pas de chance.

Tout ce qui se passe dans la taxonomie et dans les pages d’auteurs se comporte bien sauf la recherche du support attaché pour publication.

S'il vous plaît aider.

1
user87064

Je suppose que vous avez un simple malentendu sur ce que cette fonction fait réellement et sur quoi elle devrait être utilisée: get_attached_media() va simplement chercher tout enfant postes pour un poste donné:

if ( ! $post = get_post( $post ) )
    return array();

$args = array(
    'post_parent'    => $post->ID,
    'post_type'      => 'attachment',
    'post_mime_type' => $type,
    'posts_per_page' => -1,
    'orderby'        => 'menu_order',
    'order'          => 'ASC',
);

De Codex :

Récupérer les médias attachés au message passé. Utilise get_children().

Si vous utilisez ceci sur une archive auteur, la requête principale sera récupérable en utilisant $GLOBALS['wpdb']->get_queried_object() ou simplement get_queried_object(). Toujours à partir de la page Codex :

Si vous êtes sur une archive d'auteur, il retournera l'objet author

Désormais, un auteur par défaut est un objet WP_User et non un objet post pouvant avoir des enfants. Pour récupérer tous les médias qu'un auteur a attachés à des publications, vous devrez parcourir les publications d'un auteur, puis interroger le média à l'intérieur de la boucle à l'aide de $media = get_attached_media( get_the_ID() );.

1
kaiser