Получить привязку по значению meta_key

Мне нужно получить вложение (будет только один за сообщение), связанный с сообщением с meta_key wpcf-legislacion-gratis (неважно, wpcf-legislacion-gratis значение имеет столбец), используя пользовательский запрос, используя get_posts() . Я пробовал это двумя способами:

 $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(); 

Что касается вышеизложенного, у меня возникают такие сомнения:

  • Как написать запрос для поиска вложения с meta_key, равным wpcf-legislacion-gratis независимо от того, какие значения у него есть?
  • Является ли цикл в этом случае правильным? Заметьте, что у меня будет только одна wpcf-legislacion-gratis за сообщение, так что мне нужно зацикливать результаты? Не должно быть только одного?
  • Если я буду разделять оба вложения (как вы увидите в запросе в конце сообщения), должен ли я выполнить wp_reset_postdata() ?

Я тоже пробовал этот код:

 $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(), ); 

Но не работает, я не получаю никакого значения от БД. Это результат запроса, который я выполнил в командной строке 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 | +---------+---------+-------------------------+-----------------------------------------------------------------------------------+ 

Я также проверил документы здесь и здесь, но не нашел для меня ничего полезного.

Как получить вложение? Любая помощь или совет?

Solutions Collecting From Web of "Получить привязку по значению meta_key"

Я думаю, что вы за ним – get_post_meta() а не пользовательский запрос.

ПРИЧИНЫ:

  • Результаты пользовательских полей кэшируются и чрезвычайно упрощаются, когда они достигают производительности. Вы можете прочитать этот ответ, который я сделал недавно, который объяснит все

  • Вы пытаетесь подключить настраиваемое поле к сообщению только на одной странице. Это то, что get_post_meta() было разработано для

Вы можете заменить весь свой код примерно так: ( Изменено из кода )

 $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; } 

РЕДАКТИРОВАТЬ

Если вам нужно получить значение настраиваемого поля вне цикла, как на боковой панели или функции, вам нужно заменить get_the_ID() на 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; }