在我的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'];
}
答案 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>