Je dois obtenir la pièce jointe (une seule par publication) associée à une publication avec meta_key wpcf-legislacion-gratis
(quelle que soit la valeur de la colonne) à l'aide d'une requête personnalisée utilisant la fonction get_posts()
. J'ai essayé cela de deux manières:
$nonActivePlan_args = array(
'order' => 'desc',
'meta_query' => array(
array(
'key' => 'wpcf-legislacion-gratis',
'value' => NULL,
'compare' => '!='
)
),
'post_status' => 'inherit',
'posts_per_page' => 1,
'post_type' => 'attachment',
'post_parent' => get_the_ID(),
);
$nonActivePlanAttachment = get_posts( $nonActivePlan_args );
if ($nonActivePlanAttachment) {
foreach ($nonActivePlanAttachment as $attachment) { ?>
<div class="legislacion-ico">
<a class="pdf" href="<?php echo wp_get_attachment_url( $attachment->ID, true ); ?>">
<img src="<?php echo get_template_directory_uri(); ?>/images/ico_descargas.png">
<br>
Descargar PDF
</a>
</div>
<?php
}
}
wp_reset_postdata();
Relatif à celui ci-dessus, j'ai des doutes:
wpcf-legislacion-gratis
, peu importe les valeurs dont il dispose?wpcf-legislacion-gratis
par publication. Dois-je parcourir les résultats? Ne devrait pas être un seul?wp_reset_postdata()
?J'ai aussi essayé ce code:
$nonActivePlan_args = array(
'order' => 'desc',
'meta_key' => 'wpcf-legislacion-gratis',
'post_status' => 'inherit',
'posts_per_page' => 1,
'post_type' => 'attachment',
'post_parent' => get_the_ID(),
);
Mais cela ne fonctionne pas, ce qui signifie que je n’obtiens aucune valeur de DB. Voici le résultat de la requête que j'ai exécutée sur la ligne de commande MySQL:
SELECT * FROM `wp_postmeta` where post_id='11839';
+---------+---------+-------------------------+-----------------------------------------------------------------------------------+
| meta_id | post_id | meta_key | meta_value |
+---------+---------+-------------------------+-----------------------------------------------------------------------------------+
| 22149 | 11839 | wpcf-legislacion-gratis | http://jurisprudencia.dev/wp-content/uploads/2015/02/modelodatos.pdf |
| 22150 | 11839 | wpcf-legislacion-pagada | http://jurisprudencia.dev/wp-content/uploads/2015/02/AtencionUsuario_version1.pdf |
+---------+---------+-------------------------+-----------------------------------------------------------------------------------+
J'ai aussi vérifié les documents ici et ici mais n'en ai trouvé aucun utile pour moi.
Comment puis-je obtenir la pièce jointe? Toute aide ou conseil?
Je pense que ce que vous recherchez, c'est get_post_meta()
et non une requête personnalisée.
Les résultats des champs personnalisés sont mis en cache et extrêmement rationalisés lorsque les performances sont optimales. Vous pouvez lire cette réponse je l'ai fait récemment qui expliquera tout
Vous essayez d’obtenir le champ personnalisé associé à un message uniquement dans une page de message unique. C’est pourquoi get_post_meta()
a été conçu
Vous pouvez remplacer tout votre code par quelque chose comme ceci: ( modifié à partir du codex )
$key_1_value = get_post_meta( get_the_ID(), 'wpcf-legislacion-gratis', true );
// check if the custom field has a value
if( ! empty( $key_1_value ) ) {
echo $key_1_value;
}
Si vous devez obtenir la valeur du champ personnalisé en dehors de la boucle, comme dans une barre latérale ou une fonction, vous devez remplacer get_the_ID()
par get_queried_object_id()
.
$key_1_value = get_post_meta( get_queried_object_id(), 'wpcf-legislacion-gratis', true );
// check if the custom field has a value
if( ! empty( $key_1_value ) ) {
echo $key_1_value;
}