web-dev-qa-db-fra.com

Obtenir l'attachement par limace

Je voudrais obtenir une image en spécifiant un certain slug, puis en reprenant cette adresse dans le code src de l'image.

Le slug de l'image serait "book-site-header"

J'ai regardé à travers get_wp_attachment et get_wp_attachment_metadata dans le codex wordpress, mais aucun d'eux ne fait mention de la limace. Les slugs doivent être uniques et sont enregistrés dans la base de données. Il doit donc être possible de les trouver en fonction du slug, puis d'obtenir l'URL du fichier correspondant.

image of slug area

3
Alexnl

Une pièce jointe est juste une publication avec le post_status = inherit et le post_type = attachment, donc peut être interrogé avec WP_Query ou get_posts.

Notez que slug (post_name) est unique par type de message .

$_header = get_posts('post_type=attachment&name=book-site-header&posts_per_page=1&post_status=inherit');
$header = $_header ? array_pop($_header) : null;  
$header_url = $header ? wp_get_attachment_url($header->ID) : '';

vous pouvez également utiliser le code ci-dessus pour créer votre propre fonction personnalisée

function get_attachment_url_by_slug( $slug ) {
  $args = array(
    'post_type' => 'attachment',
    'name' => sanitize_title($slug),
    'posts_per_page' => 1,
    'post_status' => 'inherit',
  );
  $_header = get_posts( $args );
  $header = $_header ? array_pop($_header) : null;
  return $header ? wp_get_attachment_url($header->ID) : '';
}

et alors

$header_url = get_attachment_url_by_slug('book-site-header');
6
gmazzap