I have this page on my website -
It's a custom taxonomy template for a custom post type called Directory Entries with a taxonomy called directory_entry_type which is what's being pulled in here.
At the moment it's just pulling in all the posts under the category "Community Directory" - This category has about 6 children categories that i'd like to pull through on this page but at the moment it's just pulling in all of the posts under community directory.
How can I do this?
This is where I've got to so far -
<div id="content" class="col-md-8">
<?php
$queried_object = get_queried_object();
$term_query = $queried_object->term_id;
$current_term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) );
query_posts( array(
'posts_per_page' => -1, // you may edit this number
'orderby' => 'title',
'order' => 'ASC',
'child_of' => $current_term->term_id,
'hierarchical' => true,
'depth' => 1,
'tax_query' => array(
array(
'field' => 'term_id',
'terms' => $term_query,
'taxonomy' => $current_term->taxonomy,
)
),
'meta_query' => array(
array(
'key' => 'is_member',
'value' => '1',
'compare' => 'LIKE'
)
)
)
);
?>
<div class="grid-vw">
<ul>
<?php while (have_posts()) : the_post(); ?>
<li>
<a href="<?php the_permalink();?>">
<figure class="effect-goliath">
<?php
$image = get_field('thumbnail');
$size = 'dir-tile'; // (thumbnail, medium, large, full or custom size)
if( $image ) {
echo wp_get_attachment_image( $image, $size );
}
?>
<figcaption>
<h2><?php the_title();?> ></h2>
</figcaption>
</figure>
</a>
</li>
<?php endwhile;
wp_reset_query();
?> </ul>
</div>
Thanks for any help in advance!
EDIT
So I've solved this with this
<div class="grid-vw">
<ul>
<?php
// List posts by the terms for a custom taxonomy of any post type
$post_type = 'directory_entry';
$tax = 'directory_entry_type';
$tax_args = array(
'order' => 'ASC',
'parent' => 289
);
// get all the first level terms only
$tax_terms = get_terms( $tax, $tax_args );
if ($tax_terms) {
foreach ($tax_terms as $tax_term) { // foreach first level term
// print the parent heading
?>
<li>
<a href="<?php echo get_permalink( $tax_term->ID ); ?>">
<figure class="effect-goliath">
<?php
$image = get_field('thumbnail');
$size = 'dir-tile'; // (thumbnail, medium, large, full or custom size)
if( $image ) {
echo wp_get_attachment_image( $image, $size );
}
?>
<figcaption>
<h2><?php echo $tax_term->name; ?> ></h2>
</figcaption>
</figure>
</a>
</li>
<?php wp_reset_query();
}
}
?>
</ul>
That's pulling in exactly what i want, but now the permalinks aren't working, could anyone tell me what I'm doing wrong there?
I have this page on my website -
It's a custom taxonomy template for a custom post type called Directory Entries with a taxonomy called directory_entry_type which is what's being pulled in here.
At the moment it's just pulling in all the posts under the category "Community Directory" - This category has about 6 children categories that i'd like to pull through on this page but at the moment it's just pulling in all of the posts under community directory.
How can I do this?
This is where I've got to so far -
<div id="content" class="col-md-8">
<?php
$queried_object = get_queried_object();
$term_query = $queried_object->term_id;
$current_term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) );
query_posts( array(
'posts_per_page' => -1, // you may edit this number
'orderby' => 'title',
'order' => 'ASC',
'child_of' => $current_term->term_id,
'hierarchical' => true,
'depth' => 1,
'tax_query' => array(
array(
'field' => 'term_id',
'terms' => $term_query,
'taxonomy' => $current_term->taxonomy,
)
),
'meta_query' => array(
array(
'key' => 'is_member',
'value' => '1',
'compare' => 'LIKE'
)
)
)
);
?>
<div class="grid-vw">
<ul>
<?php while (have_posts()) : the_post(); ?>
<li>
<a href="<?php the_permalink();?>">
<figure class="effect-goliath">
<?php
$image = get_field('thumbnail');
$size = 'dir-tile'; // (thumbnail, medium, large, full or custom size)
if( $image ) {
echo wp_get_attachment_image( $image, $size );
}
?>
<figcaption>
<h2><?php the_title();?> ></h2>
</figcaption>
</figure>
</a>
</li>
<?php endwhile;
wp_reset_query();
?> </ul>
</div>
Thanks for any help in advance!
EDIT
So I've solved this with this
<div class="grid-vw">
<ul>
<?php
// List posts by the terms for a custom taxonomy of any post type
$post_type = 'directory_entry';
$tax = 'directory_entry_type';
$tax_args = array(
'order' => 'ASC',
'parent' => 289
);
// get all the first level terms only
$tax_terms = get_terms( $tax, $tax_args );
if ($tax_terms) {
foreach ($tax_terms as $tax_term) { // foreach first level term
// print the parent heading
?>
<li>
<a href="<?php echo get_permalink( $tax_term->ID ); ?>">
<figure class="effect-goliath">
<?php
$image = get_field('thumbnail');
$size = 'dir-tile'; // (thumbnail, medium, large, full or custom size)
if( $image ) {
echo wp_get_attachment_image( $image, $size );
}
?>
<figcaption>
<h2><?php echo $tax_term->name; ?> ></h2>
</figcaption>
</figure>
</a>
</li>
<?php wp_reset_query();
}
}
?>
</ul>
That's pulling in exactly what i want, but now the permalinks aren't working, could anyone tell me what I'm doing wrong there?
Share Improve this question edited Dec 11, 2017 at 12:00 Lucy Brown asked Dec 8, 2017 at 14:10 Lucy BrownLucy Brown 1491 gold badge3 silver badges11 bronze badges2 Answers
Reset to default 1To clarify, is your query only pulling posts tagged as the parent category and nothing tagged as a child category? And are you saying you'd like to have everything on this page?
You might try changing child_of
to cat
and get rid of depth
.
But TBH you may want to try a different approach at querying; this question/answer suggests that query_posts()
is not the best method: When should you use WP_Query vs query_posts() vs get_posts()?
Another approach would be to query for the IDs of the child categories of this parent and then loop through them with individual post queries - if you'd want them in six sections.
I solved this using this
<div class="grid-vw">
<ul>
<?php
// List posts by the terms for a custom taxonomy of any post type
$post_type = 'directory_entry';
$tax = 'directory_entry_type';
$tax_args = array(
'order' => 'ASC',
'parent' => 289
);
// get all the first level terms only
$tax_terms = get_terms( $tax, $tax_args );
if ($tax_terms) {
foreach ($tax_terms as $tax_term) { // foreach first level term
// print the parent heading
?>
<li>
<?php echo '<a href="'.get_term_link($tax_term).'">';
?>
<figure class="effect-goliath">
<?php
$image = get_field('thumbnail');
$size = 'dir-tile'; // (thumbnail, medium, large, full or custom size)
if( $image ) {
echo wp_get_attachment_image( $image, $size );
}
?>
<figcaption>
<h2><?php echo $tax_term->name; ?> ></h2>
</figcaption>
</figure>
</a>
</li>
<?php wp_reset_query();
}
}
?>
</ul>