如何在循环之前显示帖子中的所有标签?

时间:2016-09-10 15:34:04

标签: javascript php jquery html wordpress

我的wordpress search.php中有这样的结构:

<div class="tags">
   <!-- show all tags from posts in here -->
</div>


<div class="posts">
   <!-- Wordpress Query loop here -->
   <!-- get_the_tags() for each posts -->
   <!-- End loop -->
</div>

我能够在循环内显示所有帖子的标签列表。但是我需要在div上用循环外的类“tags”显示它们。

我知道如果我想在循环之后显示它们很简单,我只需要使用全局php变量并在之后显示它们。但我认为我可以在循环之前添加这些标记的唯一方法是使用javascript将它们插入HTML DOM。

还有其他方法可以更容易地做到这一点吗?

所要求的完整代码:

<?php 
global $global_tags;
?>

<div class="col-left">
<div class="tags">
    <div class="placeholder-tags"></div>   
</div>

</div>
<div class="col-right">

<div class="profile-wrapper">
<?php 

$tag = single_tag_title( '', false );


$args = array (
'pagination'=> true,
'posts_per_page' => '8',
'post_type' => 'profile',
'tag_slug__in' =>array($tag)

);

$the_query = new WP_Query( $args ); ?>

<?php if ( $the_query->have_posts() ) : ?>

<!-- pagination here -->

<!-- the loop -->
<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
    <div class="profile">
    <a href="<?php echo get_permalink(); ?>">

        <?php $current_profile = get_field("profile_personal")[0]; ?>


        <div class="profile-image">
        <img alt="" src="<?php echo  $current_profile["profile_image"]['sizes']['thumbnail'];  ?>"/><br>
        </div>
        <div class="profile-name">
        <?php echo  $current_profile["profile_name"] . ' ' .  $current_profile["profile_surname"];  ?>
        </div>
        <div class="profile-country">
        <?php echo $current_profile["profile_country"];  ?><br>
        </div>

        <?php

        $list_tags = get_the_tags();
        foreach ( $list_tags   as $single_tag) {
        $global_tags[] = $single_tag->slug;
        }               
        ?>

        <?php if ( has_category("bolaber",$post->ID) ) { ?>
        <div class="worked-with-us">
            &#x25cf;
        </div>
        <?php } ?>

    </a>
    </div>

<?php endwhile; ?>
<!-- end of the loop -->

<?php wp_reset_postdata(); ?>

<?php else : ?>
<p><?php _e( 'default Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>

1 个答案:

答案 0 :(得分:0)

我想出了一个不太优雅或高效的解决方案,但是它运行得很好,我在标签占位符上添加了另一个循环,使用相同的查询循环参数,但没有显示任何标签。

<?php 
global $global_tags;
?>

<div class="col-left">

<div class="tags">


    <?php 

    $tag = single_tag_title( '', false );


    $args = array (
    'pagination'=> true,
    'posts_per_page' => '8',
    'post_type' => 'profile',
    'tag_slug__in' =>array($tag)

    );

    $the_query = new WP_Query( $args ); ?>

    <?php if ( $the_query->have_posts() ) : ?>
    <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>       
        <?php

        $list_tags = get_the_tags();
        foreach ( $list_tags   as $single_tag) {
        $global_tags[] = $single_tag->slug;
        }               
        ?>
    <?php endwhile; ?>


    <pre>
        <?php
        if ( $global_tags ) {

        $global_tags = array_unique($global_tags);


        foreach ($global_tags as $value) {
            echo '</br><a href="'. site_url() .'/tag/'. $value . '">#'. $value  .'</a>';
        }
        }


        ?>

    </pre>

    <?php wp_reset_postdata(); ?>    
    <?php else : ?>
    <?php endif; ?>


</div>

</div>
<div class="col-right">

<div class="profile-wrapper">
<?php 

$tag = single_tag_title( '', false );


$args = array (
'pagination'=> true,
'posts_per_page' => '8',
'post_type' => 'profile',
'tag_slug__in' =>array($tag)

);

$the_query = new WP_Query( $args ); ?>

<?php if ( $the_query->have_posts() ) : ?>

<!-- pagination here -->

<!-- the loop -->
<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
    <div class="profile">
    <a href="<?php echo get_permalink(); ?>">

        <?php $current_profile = get_field("profile_personal")[0]; ?>


        <div class="profile-image">
        <img alt="" src="<?php echo  $current_profile["profile_image"]['sizes']['thumbnail'];  ?>"/><br>
        </div>
        <div class="profile-name">
        <?php echo  $current_profile["profile_name"] . ' ' .  $current_profile["profile_surname"];  ?>
        </div>
        <div class="profile-country">
        <?php echo $current_profile["profile_country"];  ?><br>
        </div>

        <?php

        $list_tags = get_the_tags();
        foreach ( $list_tags   as $single_tag) {
        $global_tags[] = $single_tag->slug;
        }               
        ?>

        <?php if ( has_category("bolaber",$post->ID) ) { ?>
        <div class="worked-with-us">
            &#x25cf;
        </div>
        <?php } ?>

    </a>
    </div>

<?php endwhile; ?>
<!-- end of the loop -->

<?php wp_reset_postdata(); ?>

<?php else : ?>
<p><?php _e( 'default Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>