Query posts by ACF checkbox field - php

I cant seem to get facetwp to only display posts where an ACF checkbox field has a value of yes. My ACF checkbox value is stored in the post sidebar which I believe attaches it to the post itself (for lack of a more knowledgable way of explaining it)
There are lots of examples that are similar online, but I can't seem to modify any to work for me.
I have also tried with the ACF True/false field type, as it doesn't matter to me which type of field it is.
My latest attempt is
<div class="full-width-inner">
<div class="package-listings">
<div class="listings-table-row">
<?php
$type = get_field( 'is_this_educational', get_the_ID() );
$my_posts = new WP_Query([
'post_type' => 'packages',
'posts_per_page' => 3,
'orderby' => 'date',
'meta_query' => [
[
'key' => 'is_this_educational',
'value' => '1'
]
]
]);
if ( $my_posts->have_posts() ) {
while ( $my_posts->have_posts() ) : $my_posts->the_post(); ?>
<div class="package-wrapper edu_green_bg">
<?php if( get_field('add_flag', $post->ID)) { //Check if checkbox is checked ?>
<div class="flag orange-bg"><p><?php the_field( 'flag_text', $post->ID ); ?></p></div>
<?php } ?>
<?php if ( has_post_thumbnail() ) : ?>
<div class="package-home-image">
<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
<?php the_post_thumbnail(); ?>
</a>
</div>
<?php endif; ?>
<div class="result-info">
<div class="home-package-title">
<?php the_title(); ?>
</div>
<div class="home-package-excerpt">
<p><?php echo wp_trim_words( get_the_excerpt(), 20, '...' ); ?></p>
</div>
<div class="home-package-button orange-bg">
<button>Read More</button>
</div>
</div>
</div> <!-- package wrapper end -->
<?php
endwhile;
wp_reset_postdata();
}
?>
</div> <!-- listings table row end -->
</div> <!-- Package listings end -->
</div>
But I have also tried:
$type = get_field( 'is_this_educational', get_the_ID() );
$my_posts = new WP_Query([
'post_type' => 'packages',
'posts_per_page' => 3,
'orderby' => 'date',
'meta_query' => [
[
'key' => 'is_this_educational',
'value' => '"yes"'
]
]
]);
if ( $my_posts->have_posts() ) {
while ( $my_posts->have_posts() ) : $my_posts->the_post(); ?>
And
<?php
$type = get_field( 'is_this_educational', get_the_ID() );
$my_posts = new WP_Query([
'post_type' => 'packages',
'posts_per_page' => 3,
'orderby' => 'date',
'meta_query' => [
[
'key' => 'is_this_educational',
'value' => 'yes',
'compare' => 'LIKE'
]
]
]);
if ( $my_posts->have_posts() ) {
while ( $my_posts->have_posts() ) : $my_posts->the_post(); ?>
And lastly - which I think might be the closest of them all but gives me a critical error.
Sorry for all the code but just to demonstrate that I have been trying
<section class="full-width-package-filter full-width-section cream-bg">
<div class="full-width-inner">
<div class="package-listings">
<div class="listings-table-row">
<?php
$posts = get_posts(array(
'meta_query' => array(
array(
'key' => 'is_this_educational',
'value' => '"yes"',
'compare' => 'LIKE'
)
)
));
if( $posts ) {
while ( $my_posts->have_posts() ) : $my_posts->the_post(); ?>
<div class="package-wrapper edu_green_bg">
<?php if( get_field('add_flag', $post->ID)) { //Check if checkbox is checked ?>
<div class="flag orange-bg"><p><?php the_field( 'flag_text', $post->ID ); ?></p></div>
<?php } ?>
<?php if ( has_post_thumbnail() ) : ?>
<div class="package-home-image">
<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
<?php the_post_thumbnail(); ?>
</a>
</div>
<?php endif; ?>
<div class="result-info">
<div class="home-package-title">
<?php the_title(); ?>
</div>
<div class="home-package-excerpt">
<p><?php echo wp_trim_words( get_the_excerpt(), 20, '...' ); ?></p>
</div>
<div class="home-package-button orange-bg">
<button>Read More</button>
</div>
</div>
</div> <!-- package wrapper end -->
<?php
endwhile;
wp_reset_postdata();
}
endif;
?>
</div> <!-- listings table row end -->
</div> <!-- Package listings end -->
</div>
</section>

Related

Exclude specific Woocommerce product category term(s) from a WP Query

I'm trying to load latest product in Woocommerce (on home page). I want to exclude specific product category from display on the loop, but exclude product category id is not working for me.
What I have done so far:
<?php
$args = array(
'post_type' => 'product',
'posts_per_page' => 12,
'post_status' => 'publish',
'taxonomy' => 'product_cat',
'exclude' => 29,//exclude mention category id from loop
'parent' => 0
);
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
global $product;
?>
<div class="popular-inner">
<a href="<?php echo get_permalink(); ?>">
<div class="popular-image d-flex ">
<div class="align-self-center mx-auto ">
<?php the_post_thumbnail(); ?>
</div>
</div>
<div class="popular-content-wp">
<div class="popular-title">
<h6><?php echo get_the_title(); ?></h6>
</div>
<div class="popular-price">
<p><?php echo wc_price($product->get_price()); ?></p>
</div>
<div class="popular-add-to-cart">
<ul>
<li>
Add to Cart
</li>
</ul>
</div>
</div>
</a>
</div>
<?php endwhile; wp_reset_query();?>
Since wordpress version 3.1 using a taxonomy slug in a WP_Query is deprecated in flavor of tax_query. Also there are some other mistakes. See WP_Query taxonomy parameters.
Your revisited code:
<?php
$loop = new WP_Query( array(
'post_type' => 'product',
'posts_per_page' => 12,
'post_status' => 'publish',
'parent' => 0,
'tax_query' => array( array(
'taxonomy' => 'product_cat',
'field' => 'term_id',
'terms' => array( 29 ), // Term ids to be excluded
'operator' => 'NOT IN' // Excluding terms
) ),
) );
if ( $loop->have_posts() ) :
while ( $loop->have_posts() ) : $loop->the_post();
// Get the instance of the WC_Product from the post ID
$product = wc_get_product( get_the_id() );
?>
<div class="popular-inner">
<a href="<?php echo get_permalink(); ?>">
<div class="popular-image d-flex ">
<div class="align-self-center mx-auto ">
<?php the_post_thumbnail(); ?>
</div>
</div>
<div class="popular-content-wp">
<div class="popular-title">
<h6><?php echo get_the_title(); ?></h6>
</div>
<div class="popular-price">
<p><?php echo wc_price( $product->get_price() ); ?></p>
</div>
<div class="popular-add-to-cart">
<ul>
<li>
Add to Cart
</li>
</ul>
</div>
</div>
</a>
</div>
<?php
endwhile;
wp_reset_postdata();
else: ?>
<p><?php _e( 'No posts found.' ); ?></p>
<?php endif;
?>
It should work now.

post by taxonomy not showing at all in wordpress

Newbie here,
I'm trying to display the list of my post depends on the category. But it doesn't display my post. I tried the different type of array, but no luck. I named my page taxonomy-blog_category.php
I call the page via site.com/blog_category/category
here's my current code and I know I'm so close but can't figure it out.
Here is the array:
<div class="row">
<?php $ctr = 1;
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
$custom_args = array(
'post_type' => 'blog_post',
'orderby' => 'date',
'order' => 'DESC',
'post_status' => 'publish',
'posts_per_page' => 6,
'paged' => $paged,
'tax_query' => array(
array(
'taxonomy' => 'blog-category',
'field' => 'slug',
'terms' => array('business','people','technology'),
),
),
);
Here is how I display the post
$custom_query = new WP_Query( $custom_args ); ?>
<?php if ( $custom_query->have_posts() ) : ?>
<?php while ( $custom_query->have_posts() ) : $custom_query->the_post(); ?>
<div class="col-md-4 text-center">
<div class="content-container">
<div class="wrap">
<figure class="tint t2">
<img src="<?php echo wp_get_attachment_url( get_post_thumbnail_id() ); ?>" width="317px" height="240">
</figure>
</div>
<h2><?php the_title(); ?></h2>
<h3>By <?php the_field('author'); ?> | <span><?php echo get_the_date(); ?></span></h3>
<?php $content = get_field('content'); echo mb_strimwidth($content, 0, 200, '...');?>
<div class="read-more-btn">
read more
</div>
</div>
</div>
<?php $ctr++; endwhile; ?>
I Don't know if this is necessary but here's my code for pagination:
<div class="pagination-holder">
<ul class="pagination">
<?php
if (function_exists(custom_pagination)) {
custom_pagination($custom_query->max_num_pages,"",$paged);
}
?>
<?php wp_reset_postdata(); ?>
<?php else: ?>
<p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>
</ul>
</div>

Simple output from parent category

I am working with this code in template page for WP.
<div id="content" role="main">
<?php
$query = array(
'post_type' => 'post',
'category_name' => 'jewellery-design',
'orderby' => 'date',
'order' => 'DESC'
);
$featured_home = new WP_Query( $query );
if( $featured_home->have_posts() ) {
?>
<div class="row">
<?php while ( $featured_home->have_posts() ) : $featured_home->the_post();?>
<span class="cat"><?php the_category(); ?>
<div class="col-3">
<a href="<?php the_permalink(); ?>">
<div class="featured-home-img" <?php
if ( $thumbnail_id = get_post_thumbnail_id() ) {
if ( $image_src = wp_get_attachment_image_src( $thumbnail_id, 'normal-bg' ) )
printf( ' style="background-image: url(%s);"', $image_src[0] );
}?>>
<div class="blog-info-content">
<h3><?php the_title(); ?></h3>
<div class="obsah"><?php the_content(); ?></div> </span>
<p class="postmetadata">
Posted in <?php the_category(', ') ?>
<strong>|</strong>
<?php edit_post_link('Edit','','<strong>|</strong>'); ?>
</span>
</div>
</div>
</a>
</div>
<?php
endwhile;
?>
</div>
<?php
}
wp_reset_postdata();
?>
</div>
And I am getting output like this:
But, i´d like to have output like this:
Can someone tell me how can I do it? Or may I use some plugin for Wordpress to make it easier for me?
Thank you.
I might think about sorting them into groups first, then re-looping over the sorted groups. I am a little rusty on Wordpress so I have set it up essentially, but all the functions/methods need to return values, not echo, so you will need to adjust that:
<?php
# Create base function
function getItemsByCategoryType($category)
{
$query = array(
'post_type' => 'post',
'category_name' => $category,
'orderby' => 'date',
'order' => 'DESC'
);
# Get query
$featured_home = new WP_Query($query);
# Just stop if empty
if(!$featured_home->have_posts())
return false;
# Set a default
$array = array();
while($featured_home->have_posts()){
$featured_home->the_post();
$thumbnail_id = get_post_thumbnail_id();
$image_src = ($thumbnail_id)? wp_get_attachment_image_src($thumbnail_id,'normal-bg')) : false;
# You are looking to store the category title as the key
# That will isolate each group
$array[the_category()][] = array(
'thumb_id' => $thumbnail_id,
'image' => $image_src,
'permlink' => the_permalink(),
'title' => the_title(),
'content' => the_content(),
'categories' => the_category(', '),
'edit_mode' => edit_post_link('Edit','','<strong>|</strong>')
);
}
wp_reset_postdata();
# Send back stored data as an array
return $array;
}
# To use, get the data from your function
$Items = getItemsByCategoryType('jewellery-design') ?>
<div id="content" role="main">
<?php if(!empty($Items)): ?>
<div class="row">
<?php foreach($Items as $categories => $rows): ?>
<span class="cat"><?php echo $categories ?>
<?php foreach($rows as $row): ?>
<div class="col-3">
<a href="<?php echo $row['permlink'] ?>">
<div class="featured-home-img"<?php if(!empty($row['image'][0])) echo ' style="background-image: url('.$row['image'][0].');"' ?>>
<div class="blog-info-content">
<h3><?php echo $row['title'] ?></h3>
<div class="obsah">
<?php echo $row['content'] ?>
</div>
<p class="postmetadata">Posted in <?php echo $row['categories'] ?><strong>|</strong><?php $row['edit_mode'] ?></p>
</div>
</div>
</a>
</div>
<?php endforeach ?>
</span>
<?php endforeach ?>
</div>
<?php endif ?>
</div>
NOTE: Just to reiterate, I am not up to speed on WP so you need to take the idea of what I am proposing and fixing it, specifically when it comes to returning values vs allowing the WP functions to echo content.
EDIT:
You want an array to come out of the function similar to:
Array (
[ Fibre Collection ] => Array (
[ 0 ] => Array (
[ title ] => FIBRE_BRACELET
[ content ] => etc...,
etc...
)
),
[ Tetragon Collection ] => Array (
[ 0 ] => Array (
[ title ] => Test2
[ content ] => etc...,
etc...
),
[ 1 ] => Array (
[ title ] => TETRAGÓN_BRACELET
[ content ] => etc...,
etc...
)
)
)
I found a solution to the output I needed. If this helps anyone :)
$cat_args=array(
'orderby' => 'name',
'order' => 'ASC',
'parent' => 2
);
$categories=get_categories($cat_args);
foreach($categories as $category) {
$args=array(
'showposts' => -1,
'category__in' => array($category->term_id),
'caller_get_posts'=>1
);
$posts=get_posts($args);
if ($posts) {
echo '<div class="test"><p>Category: <a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . '>' . $category->name.'</a> </p> ';
foreach($posts as $post) {
setup_postdata($post); ?>
<p><?php the_title(); ?></p>
<p><a href="<?php the_permalink() ?>" <?php the_content(); ?></a></p>
<?php
} // foreach($posts
echo '</div>';} // if ($posts
} // foreach($categories
?>
The 'parent' => 2 means ID of parent category from which you want to get your posts.
Have a nice day.

WP_Query orderby 'rand' not working

Trying to order some posts I'm displaying on a single custom post type page with random, but they aren't random at all. :/
<?php
// Grab the taxonomy term slug for the current post
$terms = get_the_terms( get_the_ID(), 'category-staff' );
if ( $terms && ! is_wp_error( $terms ) ) :
$draught_links = array();
foreach ( $terms as $term ) {
$draught_links[] = $term->slug;
}
$on_draught = join( ", ", $draught_links );
?>
<div class="container hidden-xs">
<div class="row">
<div class="col-sm-12">
<hr />
<h3 class="text-center">Other People At Our Great Resort</h3>
</div>
</div>
<div class="row">
<div class="col-sm-12 col-lg-10 col-lg-offset-1">
<div class="row staff-list">
<?php
// WP_Query arguments
$args2 = array (
'post_type' => 'staff',
'tax_query' => array(
array(
'taxonomy' => 'category-staff',
'field' => 'slug',
'terms' => $on_draught,
),
),
'nopaging' => false,
'posts_per_page' => '4',
'order' => 'DESC',
'orderby' => 'rand',
);
// The Query
$query2 = new WP_Query( $args2 );
// The Loop
if ( $query2->have_posts() ) {
while ( $query2->have_posts() ) {
$query2->the_post(); ?>
<div class="staff staff-other col-sm-3 text-center">
<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>">
<?php echo get_the_post_thumbnail( $_post->ID, 'large', array( 'class' => 'img-responsive img-circle img-staff' ) ); ?>
<h4><?php the_title(); ?></h4>
<?php if (get_field('staff_job')) { ?>
<p><?php the_field('staff_job'); ?></p>
<?php } ?>
</a>
</div>
<?php }
} else { ?>
<?php }
// Restore original Post Data
wp_reset_postdata(); ?>
</div>
</div>
</div>
</div>
<?php endif; // terms if statement ?>
Turns out it was something to do with WPEngine. They disable rand() from the server and it needs to be enabled manually.
Another solution may be to add this code before running the new WP_Query($args) function.
remove_all_filters('posts_orderby');
https://developer.wordpress.org/reference/functions/remove_all_filters/

Why can't I pass a custom field variable to 'numberposts' variable in Wordpress array?

I'm going crazy here - I can't figure out why this doesn't work!
I have a wordpress template with multiple queries to show different post types.
I am able to do this no problem:
$showfeatposts = "1";
$args = array(
'numberposts' => $showfeatposts,
'orderby' => 'post_date',
'order' => 'DESC',
'post_type' => 'post',
'cat' => '58',
'post_status' => 'publish',
'suppress_filters' => true
);
Which passses the value of "1" into the 'numberposts' variable.
What I NEED to do is instead replace that value of "1" with a value passed from a custom field in the admin panel so that the administrator can enter the number of posts they want to show.
When I change my code instead to this:
$showarticleposts = the_field('articles-posts-to-show');
$args = array(
'numberposts' => $showarticleposts,
'orderby' => "post_date",
'order' => 'DESC',
'post_type' => 'post',
'cat' => '5, -58',
'post_status' => 'publish',
'suppress_filters' => true
);
I get all posts returned, as if the value being entered is '-1'
I've verified that the actual value in the custom field is '2' by enchoing it on the page.
What am I doing wrong? Surely this should be possible?
For reference: Here's the page.
ETA: I've also tried this method from an ACF tutorial - still doesn't work:
$args = array(
'numberposts' => get_field('showarticleposts'),
'orderby' => "post_date",
'order' => 'DESC',
'post_type' => 'post',
'cat' => '5, -58',
'post_status' => 'publish',
'suppress_filters' => true
ETA2: In response to the answer below - I have also tried this option:
$showarticleposts = get_field('showarticleposts');
$args = array(
'numberposts' => $showarticleposts,
'orderby' => "post_date",
'order' => 'DESC',
'post_type' => 'post',
'cat' => '5, -58',
'post_status' => 'publish',
'suppress_filters' => true
);
And if I put this code on the page - it does echo the number '2':
<?php echo get_field('showarticleposts'); ?>
Per request - here is the full page of code - I have tried to clean it up as much as possible - you will undoubtably notice the weird coding for the reports section, I am taking this over from someone who used Types to create the custom fields and custom post types. But I am using ACF custom fields for my attempt to add the ability to choose how many of each post-type to show on the homepage:
section id="content" role="main" class="clearfix animated">
<?php
/**
* If Featured Image is uploaded set it as a background
* and change page title color to white
**/
if ( has_post_thumbnail() ) {
$page_image_url = wp_get_attachment_image_src( get_post_thumbnail_id(), 'big-size' );
$page_bg_image = 'style="background-image:url(' . $page_image_url[0] . ');"';
$title_with_bg = 'title-with-bg';
} else {
$title_with_bg = 'wrapper title-with-sep';
} ?>
<!--<header class="entry-header page-header">
<div class="page-title <?php echo isset( $title_with_bg ) ? $title_with_bg : ''; ?>" <?php echo isset( $page_bg_image ) ? $page_bg_image : ''; ?>>
<div class="wrapper">
<h1 class="entry-title"><?php the_title(); ?></h1>
</div>
</div>
</header>-->
<div class="wrapper">
<div class="grids">
<div class="grid-8 column-1">
<?php
// Enable/Disable sidebar based on the field selection
if ( ! get_field( 'page_sidebar' ) || get_field( 'page_sidebar' ) == 'page_sidebar_on' ):
?>
<?php endif; ?>
<?php
if (have_posts()) : while (have_posts()) : the_post();
?>
<div class="page-content">
<?php the_content(); ?>
</div>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<?php $showfeatposts = "1";
$args = array(
'numberposts' => $showfeatposts,
'orderby' => 'post_date',
'order' => 'DESC',
'post_type' => 'post',
'cat' => '58',
'post_status' => 'publish',
'suppress_filters' => true
);
$featposts = get_posts( $args );
foreach( $featposts as $post ) : //setup_postdata($ppost);
setup_postdata( $post ); ?>
<div class="col-md-12 recent feat" id="recent">
<figure class="entry-image inview">
<?php if ( has_post_thumbnail() ) { ?>
<a href="<?php the_permalink(); ?>">
<?php the_post_thumbnail( 'rectangle-size-large' ); ?></a>
<?php } ?>
</figure>
<header class="entry-header">
<div class="entry-category">
<?php the_author_posts_link(); ?> / <?php the_time('F jS, Y'); ?> </div>
<h2 class="entry-title" itemprop="headline">
<?php echo $post->post_title; ?>
</h2>
</header>
<div class="entry-content">
<?php echo apply_filters("the_content", $post->the_excerpt) ; ?>
</div>
<div class="entry-category">
<span class="posted-on">By
<span class="author vcard"><?php the_author_posts_link(); ?></span></span>
</div>
</div>
<?php
$pnum++;
endforeach; ?>
</article>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<div class="col-md-12 homehdr">
<header class="section-header">
<div class="title-with-sep">
<h2 class="title">Recent Articles</h2>
</div>
</header>
</div>
<?php $showarticleposts = "4";
$args = array(
'numberposts' => $showarticleposts,
'orderby' => "post_date",
'order' => 'DESC',
'post_type' => 'post',
'cat' => '5, -58',
'post_status' => 'publish',
'suppress_filters' => true
);
$artposts = get_posts( $args );
foreach( $artposts as $post ) : //setup_postdata($ppost);
setup_postdata( $post ); ?>
<div class="col-md-6 recent arts" id="arts">
<figure class="entry-image inview">
<?php if ( has_post_thumbnail() ) { ?>
<a href="<?php the_permalink(); ?>">
<?php the_post_thumbnail( 'rectangle-size' ); ?>
</a>
<?php } ?></figure>
<header class="entry-header">
<div class="entry-category">
<?php the_author_posts_link(); ?> / <?php the_time('F jS, Y'); ?></div>
<h2 class="entry-title" itemprop="headline">
<?php echo $post->post_title; ?>
</h2>
</header>
<div class="entry-content">
<?php if ($post->post_excerpt) the_excerpt(); else { ?>
<?php $content = apply_filters("the_content", $post->post_content);
$content = strip_tags($content);
echo substr($content, 0, 100); }
?></div>
<div class="entry-category">
<span class="posted-on">By
<span class="author vcard"><?php the_author_posts_link(); ?></span></span>
</div>
</div>
<?php
$pnum++;
endforeach; ?>
</article>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<div class="col-md-12 homehdr">
<header class="section-header">
<div class="title-with-sep">
<h2 class="title">Recent Videos</h2>
</div>
</header>
</div>
<?php $showvideoposts = "2";
$args = array(
'numberposts' => $showvideoposts,
'orderby' => 'post_date',
'order' => 'DESC',
'post_type' => 'post',
'cat' => '3, -58',
'post_status' => 'publish',
'suppress_filters' => true
);
$vidposts = get_posts( $args );
foreach( $vidposts as $post ) : //setup_postdata($ppost);
setup_postdata( $post ); ?>
<div class="col-md-6 recent vids">
<?php $video_embed = wp_oembed_get( get_post_meta( $post->ID, 'add_video_url', true ) ); echo '<figure class="video-wrapper">' .$video_embed. '</figure>'; ?>
<header class="entry-header">
<div class="entry-category">
<?php the_author_posts_link(); ?> / <?php the_time('F jS, Y'); ?> </div>
<h2 class="entry-title" itemprop="headline">
<?php echo $post->post_title; ?>
</h2>
</header>
<div class="entry-content">
<?php echo $post->the_content; ?>
</div>
<div class="entry-category">
<span class="posted-on">By
<span class="author vcard"><?php the_author_posts_link(); ?></span></span>
</div>
</div>
<?php
$pnum++;
endforeach; ?>
</article>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<div class="col-md-12 homehdr">
<header class="section-header">
<div class="title-with-sep">
<h2 class="title">Recent Notes</h2>
</div>
</header>
</div>
<?php
$shownoteposts = "2";
$args = array(
'numberposts' => $shownoteposts,
'orderby' => 'post_date',
'order' => 'DESC',
'post_type' => 'post',
'cat' => '42',
'post_status' => 'publish',
'suppress_filters' => true
);
$noteposts = get_posts( $args );
foreach( $noteposts as $post ) : //setup_postdata($ppost);
setup_postdata( $post ); ?>
<div class="col-md-6 recent notes">
<header class="entry-header">
<div class="entry-category">
<?php the_author_posts_link(); ?> / <?php the_time('F jS, Y'); ?>
</div>
<h2 class="entry-title" itemprop="headline">
<?php echo $post->post_title; ?>
</h2>
</header>
<div class="entry-content">
<?php echo apply_filters("the_excerpt", $post->the_excerpt) ; ?>
</div>
<div class="entry-category">
<span class="posted-on">By
<span class="author vcard"><?php the_author_posts_link(); ?></span></span>
</div>
</div>
<?php
$pnum++;
endforeach; ?>
</article>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<div class="col-md-12 homehdr">
<header class="section-header">
<div class="title-with-sep">
<h2 class="title">Recent Reports</h2>
</div>
</header>
</div>
<?php
$showreports = get_field('showreports');
$args = array(
'numberposts' => $showreports,
'orderby' => 'post_date',
'order' => 'DESC',
'post_type' => 'reports',
'post_status' => 'publish',
'suppress_filters' => true
);
$reptposts = get_posts( $args );
foreach( $reptposts as $post ) : //setup_postdata($ppost);
setup_postdata( $post ); ?>
<div class="col-md-6 recent rpts">
<h2 class="report-title" itemprop="headline">
<a href="<?php echo get_permalink($post->ID); ?>">
<?php echo(types_render_field("first-name", array('raw' => true))); echo(" ");
echo(types_render_field("last-name", array('raw' => true))); ?></a>
</h2>
<p><strong>Posted by:</strong> <a href="<?php echo get_author_posts_url(get_the_author_meta('ID')); ?>" class="url fn n" rel="author" itemprop="url">
<span itemprop="name"><?php the_author_meta('display_name'); ?>
</span></a> on <?php
$publish_date = '<time class="entry-date updated" datetime="' . get_the_time( 'c' ) . '" itemprop="datePublished">' . get_the_time( get_option( 'date_format' ) ) . '</time>'; echo $publish_date; ?><br />
<strong>Dates Seen:</strong>
<?php,$dates_seen = types_render_field("dates-seen", array('raw' => true)); echo($dates_seen); ?>
<br />
<strong>Affiliate:</strong>
<?php echo(types_render_field("milb", array('raw' => true)));
<br />
<strong>MLB Team</strong>
<?php echo(types_render_field("mlb-club", array('raw' => true))); ?>
</p>
</div>
<?php
$pnum++;
endforeach; ?>
</article>
<?php endwhile; endif; ?>
<?php
// Enable/Disable comments
if ( $ti_option['site_page_comments'] == 1 ) {
comments_template();
} ?>
<?php
// Enable/Disable sidebar based on the field selection
if ( ! get_field( 'page_sidebar' ) || get_field( 'page_sidebar' ) == 'page_sidebar_on' ): ?>
</div>
<?php get_sidebar(); ?>
</div><!-- .grids -->
<?php endif; ?>
</div>
</section><!-- #content -->
<?php get_footer(); ?>
the_field(), by definition, will echo out the value of the field onto the page and NOT store it inside a variable... instead you want to do this:
$showarticleposts = get_field('articles-posts-to-show');
$args = array(
'numberposts' => $showarticleposts,
'orderby' => "post_date",
'order' => 'DESC',
'post_type' => 'post',
'cat' => '5, -58',
'post_status' => 'publish',
'suppress_filters' => true
);
To make sure it's getting what you want, do: var_dump( $showarticleposts ); and see if a 2, as you claim it should be, is being dumped on the page. Your third example "should" work, but you are using a different "field" name in each of your examples, so it's hard to tell if 'showarticleposts' or 'articles-posts-to-show' is the actual field name.
UPDATE
Since looking at your code... I have noticed that you are using setup_postdata( $post );. While this is a great thing to use, it's changing your global $post variable, and therefore when you call get_field() it is using the $post->ID of the "changed" $post variable, which is not what you want. You want the original $post->ID of the page you are currently viewing. So, simply add wp_reset_postdata(); after every custom loop you've created and it should fix the issue.
UPDATE 2
Since you mention it is STILL not working, the only other thing I can think of is to set a variable to the original page id at the very top of the page...
$current_page_id = get_the_ID();
Then when you call get_field(), include that id:
$showarticleposts = get_field( 'articles-posts-to-show', $current_page_id );

Categories