I create a custom post type and wrote a shortcode to display the posts on the front end of my website, but the code only displays one (1) post, and the most recent one. See front-end page here -> . The CPT is the "jobs board".
Here is my code. Any advice for cleaning this code up and making sure all of my posts display on the front end? Thank you!
function locg_view_jobs($atts) {
$atts = shortcode_atts(
array( //default values
'post_type' => 'locg_jobs',
'post_status' => 'publish',
),
$atts, 'locgviewjobs' );
global $post;
$posts = new WP_query($atts);
$output = '';
$terms = get_the_terms( get_the_ID(), 'job_cat'); foreach ($terms as $term) { $job_cat_links[]=$term->name; }
$job_cat_go = join(",", $job_cat_links);
if ($posts->have_posts())
while ($posts->have_posts()):
$posts->the_post();
$out = '<div class="job_post"><h4><a href=" ' . get_the_permalink() . '" title="Apply Now" />' . get_the_title() . '</a></h4>
<div class="jobs_meta">
<span class="meta">Posted Date:</span> ' . get_the_date() . '</span> | <span class="meta">Open Until:</span> ' . get_post_meta($post->ID, 'expiredate', true) . ' | <span class="meta">Department:</span> ' . get_post_meta($post->ID, 'Department', true) . ' </div>
<p>' . get_the_excerpt() . '</p>
<a class="red_link" target="_blank" href=" ' . get_the_permalink() . '" /><button class="red" style="margin-right: 10px;"/>Learn More</button></a>
<a class="red_link" target="_blank" href="" /><button class="red"/>Apply Now</button></a>
</div>';
endwhile;
else return( 'Sorry, there are no jobs available at this time. Check back often! In the meantime, you can fill out a blank application for us to hold on file. <a href="" target="_blank" />Click here</a>.' );
wp_reset_query();
return html_entity_decode($out);
}
add_shortcode( 'locgviewjobs', 'locg_view_jobs');
I create a custom post type and wrote a shortcode to display the posts on the front end of my website, but the code only displays one (1) post, and the most recent one. See front-end page here -> https://www.800goldlaw/careers. The CPT is the "jobs board".
Here is my code. Any advice for cleaning this code up and making sure all of my posts display on the front end? Thank you!
function locg_view_jobs($atts) {
$atts = shortcode_atts(
array( //default values
'post_type' => 'locg_jobs',
'post_status' => 'publish',
),
$atts, 'locgviewjobs' );
global $post;
$posts = new WP_query($atts);
$output = '';
$terms = get_the_terms( get_the_ID(), 'job_cat'); foreach ($terms as $term) { $job_cat_links[]=$term->name; }
$job_cat_go = join(",", $job_cat_links);
if ($posts->have_posts())
while ($posts->have_posts()):
$posts->the_post();
$out = '<div class="job_post"><h4><a href=" ' . get_the_permalink() . '" title="Apply Now" />' . get_the_title() . '</a></h4>
<div class="jobs_meta">
<span class="meta">Posted Date:</span> ' . get_the_date() . '</span> | <span class="meta">Open Until:</span> ' . get_post_meta($post->ID, 'expiredate', true) . ' | <span class="meta">Department:</span> ' . get_post_meta($post->ID, 'Department', true) . ' </div>
<p>' . get_the_excerpt() . '</p>
<a class="red_link" target="_blank" href=" ' . get_the_permalink() . '" /><button class="red" style="margin-right: 10px;"/>Learn More</button></a>
<a class="red_link" target="_blank" href="http://gld.la/2GciVF4" /><button class="red"/>Apply Now</button></a>
</div>';
endwhile;
else return( 'Sorry, there are no jobs available at this time. Check back often! In the meantime, you can fill out a blank application for us to hold on file. <a href="http://gld.la/2GciVF4" target="_blank" />Click here</a>.' );
wp_reset_query();
return html_entity_decode($out);
}
add_shortcode( 'locgviewjobs', 'locg_view_jobs');
Share
Improve this question
asked Apr 8, 2019 at 13:28
tommycopelandtommycopeland
33 bronze badges
2 Answers
Reset to default 1Try adding 'posts_per_page' => -1,
to your default atts. This will make the query return all of the posts instead of limiting it. Also you're overriding $out
each loop instead of adding to it. Change $out = '<div class
to $out .= '<div class
Try this
function locg_view_jobs($atts) {
$atts = shortcode_atts(
array( //default values
'post_type' => 'locg_jobs',
'post_status' => 'publish',
),
$atts, 'locgviewjobs' );
global $post;
$posts = new WP_query($atts);
$out = '';
$terms = get_the_terms( get_the_ID(), 'job_cat');
foreach ($terms as $term) {
$job_cat_links[]=$term->name;
}
$job_cat_go = join(",", $job_cat_links);
if ($posts->have_posts())
while ($posts->have_posts()):
$posts->the_post();
$out .= '<div class="job_post"><h4><a href=" ' . get_the_permalink() . '" title="Apply Now" />' . get_the_title() . '</a></h4>
<div class="jobs_meta">
<span class="meta">Posted Date:</span> ' . get_the_date() . '</span> | <span class="meta">Open Until:</span> ' . get_post_meta($post->ID, 'expiredate', true) . ' | <span class="meta">Department:</span> ' . get_post_meta($post->ID, 'Department', true) . ' </div>
<p>' . get_the_excerpt() . '</p>
<a class="red_link" target="_blank" href=" ' . get_the_permalink() . '" /><button class="red" style="margin-right: 10px;"/>Learn More</button></a>
<a class="red_link" target="_blank" href="http://gld.la/2GciVF4" /><button class="red"/>Apply Now</button></a>
</div>';
endwhile;
else return( 'Sorry, there are no jobs available at this time. Check back often! In the meantime, you can fill out a blank application for us to hold on file. <a href="http://gld.la/2GciVF4" target="_blank" />Click here</a>.' );
wp_reset_query();
return html_entity_decode($out);
}
add_shortcode( 'locgviewjobs', 'locg_view_jobs');
发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745614652a4636158.html
评论列表(0条)