获取Wordpress循环之外的附件标题

时间:2017-04-28 19:34:01

标签: javascript php wordpress global-variables

在我的wordpress页面上,我有以下循环,它成功输出附件的标题。

<?php 
$the_query = new WP_Query(array( 'post_type' => 'attachment')); 
while ( $the_query->have_posts() ) :  $the_query->the_post();

$attachment_data = wp_prepare_attachment_for_js();
echo '<h2>'.$attachment_data['caption'].'</h2>'
;?>

现在,我还需要在循环外调用附件标题。这就是我在functions.php中尝试的内容:

function custom_info()
     {  
         global $wp_query;
         $query_id = $wp_query->post->ID;
         $attachment_data_query = wp_prepare_attachment_for_js( $query_id );

         wp_register_script( 'custom_data_info');
         $info = array(
             'data_query'   => $attachment_data_query['caption']
         );
         wp_enqueue_script( 'custom_data_info' );
         wp_localize_script('custom_data_info', 'info', $info);
    }
     if ( !is_admin() ) add_action( "wp_enqueue_scripts", "custom_info", 10 );

然后它将在外部javascript文件中调用,如下所示:

return info.data_query

我知道custom_info function和javascript文件正在相互通话。问题在于我如何定义$query_id

编辑:几乎已修复。问题是我没有包含foreach语句,因此循环中的第一项一遍又一遍地重复。

我在下面进行了调整,但出于某种原因,现在输出info.data_query时数组为空...

function custom_info(){  
     global $wp_query;
     wp_register_script( 'custom_data_info');

     $info = array('data_query' => array());

     foreach ( $wp_query->posts as $query_id) {
        $attachment_data_query = wp_prepare_attachment_for_js( $query_id );
        $info['data_query'][$query_id] = $attachment_data_query['caption'];

      }

1 个答案:

答案 0 :(得分:0)

您确定$ wp_query会返回正确的帖子ID吗?根据我的经验,使用全球$ post更好。将其传递给wp_prepare_attachment_js()代替:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
  <label class="produit_type">
    <input type="checkbox" name="produit_type[]" value="奢侈品与配饰">奢侈品与配饰
  </label>
  <label class="produit_type">
    <input type="checkbox" name="produit_type[]" value="女士时尚">女士时尚
  </label>
  <label class="produit_type">
    <input type="checkbox" name="produit_type[]" value="男士时尚">男士时尚
  </label>
  <label class="produit_type">
    <input type="checkbox" name="produit_type[]" value="美妆与护肤">美妆与护肤
  </label>
  <label class="produit_type">
    <input type="checkbox" name="produit_type[]" value="儿童">儿童
  </label>
  <label class="produit_type">
    <input type="checkbox" name="produit_type[]" value="内衣">内衣
  </label>
  <label class="produit_type">
    <input type="checkbox" name="produit_type[]" value="家居">家居
  </label>
  <input type="submit" value="submit">
</form>