I'm trying to make a conditional if the current author has uploaded a featured image in a custom post, but it ain't workin' ...

<?php if ( 
1 == count_user_posts( get_current_user_id(), "CUSTPOSTTYPE" ) 
&& is_user_logged_in() 
&& has_post_thumbnail()
) { ?>
  • You mean if the post has a featured image no matter who upload it right? The has_post_thumbnail function just checks if the post has a feature image, not if the current author upload it.
    – Laxmana
    Feb 6 '17 at 12:31
  • if the current logged in author/user has published a custom post with a featured imaged attached to their post
    – Pete
    Feb 6 '17 at 12:35
  • Also I believe that your logic is wrong based on what you said you are trying to do. count_user_posts returns the number of posts the author posted. So you are saying if the user has posted one post (no matter which post) and if is logged in and if the post has a thumbnail.
    – Laxmana
    Feb 6 '17 at 12:36
  • It works for me so far... i'm just trying to add the featured image condition on top of what works
    – Pete
    Feb 6 '17 at 12:38
  • Working do not imply correctness.
    – Laxmana
    Feb 6 '17 at 12:39

Try this

if ( 
1 < count_user_posts( get_current_user_id(), "CUSTPOSTTYPE" ) 
&& is_user_logged_in() 
&& has_post_thumbnail()
) {


to debug, you should check the output of the following...

var_dump(count_user_posts( get_current_user_id(), "CUSTPOSTTYPE" ));
  • What is that? I want it to equal 1 post. Please check your answer's code.
    – Pete
    Feb 6 '17 at 12:29
  • Then use 1 === operator not 1== Feb 6 '17 at 12:35
  • how is your code different to what I showed in my question?
    – Pete
    Feb 6 '17 at 12:41
  • It is different at 1<count... as 1== True is equal to 1==1... Feb 6 '17 at 17:00

The condition in my answer says that if the user is logged in and if the current user is the user that posted the current post and if that post has a featured image then do something.

&& get_current_user_id() === get_the_author_meta( 'ID' )
&& has_post_thumbnail()) {
    /* action */
  • I don't want the current post, I want the current user's custom post. This conditional needs to work in any theme file, as mine does now.
    – Pete
    Feb 6 '17 at 12:53
  • What do you mean by user's custom post?
    – Laxmana
    Feb 6 '17 at 12:54
  • The custom post that the current author published. Trust me it works.
    – Pete
    Feb 6 '17 at 12:54
  • The code above works for custom posts. You are in a single custom post page right? When you check with count_user_posts you just check how many post the user has posted it. So if the user has posted more than one your condition will fail. That's why Vishal put a greater condition, to catch that scenario. Sorry if I insist but I am trying to help.
    – Laxmana
    Feb 6 '17 at 12:59
  • My original code worked in any template file to restrict the current logged in user accordingly, it didn't only apply the condition when it was on a specific cpt page or otherwise. Thanks for helping and hanging in there ;)
    – Pete
    Feb 6 '17 at 13:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.