• Hi,

    I have a very strange problem with the post lists on wordpress admin. If an user is only first author (like he created the post) or only co-author, then everything works fine and the post list is complete.

    But when an user is first author of some posts and co-authors of others, then the problem occurs and the list is incomplete and shows only posts where the user is first author.

    Some extra details visiting the page edit.php?author_name=john-smith&post_type=member:
    I’ve dumped the query var $where from the function posts_where_filter on co-authors-plus.php, with an admin account and with an author account.

    here is the query which works (admin user):
    string(442) ” AND ((wp_posts.post_author = 826 OR (wp_term_taxonomy.taxonomy = ‘author’ AND wp_term_taxonomy.term_id = ‘1168’))) AND wp_posts.post_type = ‘member’ AND (wp_posts.post_status = ‘publish’ OR wp_posts.post_status = ‘acf-disabled’ OR wp_posts.post_status = ‘archive’ OR wp_posts.post_status = ‘future’ OR wp_posts.post_status = ‘draft’ OR wp_posts.post_status = ‘pending’ OR wp_posts.post_status = ‘private’ OR wp_posts.post_status = ‘archive’)”

    here is the query which doesn’t works (author user):
    string(506) ” AND wp_posts.post_author IN (826) AND wp_posts.post_type = ‘member’ AND (wp_posts.post_status = ‘publish’ OR wp_posts.post_status = ‘acf-disabled’ OR wp_posts.post_status = ‘archive’ OR wp_posts.post_status = ‘future’ OR wp_posts.post_status = ‘draft’ OR wp_posts.post_status = ‘pending’ OR (wp_posts.post_author = 826 OR (wp_term_taxonomy.taxonomy = ‘author’ AND wp_term_taxonomy.term_id = ‘1168’)) AND wp_posts.post_status = ‘private’ OR wp_posts.post_author = 826 AND wp_posts.post_status = ‘archive’)”

    Does someone have an idea why?

    https://wordpress.org/plugins/co-authors-plus/

Viewing 6 replies - 1 through 6 (of 6 total)
  • Hi Marcio,
    I have exactly the same problem as you.

    I’m using the plugin “members” that allows you to create your own roles. I have found that the problem occurs when the role has the capability “edit_others_posts” deactivated. Everything works fine, when this capability is activated.

    The problem is that this may not be a solution for my specific case, since these users are not allowed to edit the others contents.

    I have also seen that this problem does not occur with “posts” only occurs when listing the different custom post types created for this project. An output of the $supported_post_types array, just in case, shows that all of them are supported…

    Any ideas?

    Thread Starter Marcio Marim

    (@marciomarim)

    Hi capiedge,

    I’ve found a temporary solution (not as clean as I’d like) but works for me. I could identify the part of the query to list custom posts for custom roles wasn’t working so I just modified the query to get it working.

    So here is what I did:
    Edit the co-authors-plus.php, look for the function posts_where_filter() and at the end of if ( $query->is_author() ) I added my code to “repair” the query:

    $ssearch = ' AND wp_posts.post_author IN (';
    if (substr($where, 0, strlen($ssearch)) === $ssearch){
    	// removing first AND
    	$where = trim($where, ' AND ');
    	// starting from next AND
    	$where = strstr($where, ' AND ');
    
    	// second case check, if true, then we need to replace stuff
    	$ssearch = ' AND wp_posts.post_type = ';
    	if (substr($where, 0, strlen($ssearch)) === $ssearch){
    
    		$term_id = $terms[0]->term_id;
    		$user_id = $query->get( 'author' );
    		if (is_numeric($term_id) && $user_id){
    			//remove indesided string
    			$stringrep = 'OR (wp_posts.post_author = '. $user_id .' OR (wp_term_taxonomy.taxonomy = \'author\' AND wp_term_taxonomy.term_id = \''. $term_id .'\'))';
    			$where = str_replace($stringrep, '', $where);
    			$stringrep = 'OR wp_posts.post_author = '. $user_id .' ';
    			$where = str_replace($stringrep, '', $where);
    			$where = ' AND (wp_posts.post_author = '. $user_id .' OR (wp_term_taxonomy.taxonomy = \'author\' AND wp_term_taxonomy.term_id = \''. $term_id .'\'))' . $where;
    		}
    	}
    }

    Tell me if it works for you.
    Cheers!

    Marcio! You are right! It works!

    Anyway, there should be a generic solution, don’t you think? Maybe a filter for this $return will be appreciated… In order to don’t change the original code.

    I still don’t understand what is causing the problem, I was thinking that the custom role capabilities were the responsible, but it seems that they are not.

    Meanwhile, many thanks for your code!

    I think i have the same problem. I’m on a multisite environment and i created a new site. After that, the first time we posted on the original site (and the author was there already) a new author was created called cap-[original nickname] and has just a few posts linked.
    The results is that when watching the user list if i click on that author i just see the new post instead of all the ones he had (like 3k+!).

    We need to find a solution to this problem w/o having to update the core code or it will be a pain for every update.

    Thread Starter Marcio Marim

    (@marciomarim)

    @capiedge it’s nice that it also works for you.

    @sirion89, the solution I’ve posted doesn’t modify the WP core but only the plugin file. Anyway this plugin wasn’t updated for 2 years now so it won’t be a problem 🙂

    @marcio i was talking about the plugin core file,not the WP one.

    It’s sad, i forked his gitHub repo and modified for another thing, submitted a merge request but no answer so far. I see instead that the repo is actually updated 18 days ago, maybe we still have a chance.

    If he wont update this i suggest you to check my fork here https://github.com/NetserviceLab/Co-Authors-Plus. I will keep this updated with the plugin updates (if any comes out) but you will lose the ability of updating the plugin directly from wordpress.
    You will have to download the zip from the repository i’ve linked above and manually replace the plugin folder.

Viewing 6 replies - 1 through 6 (of 6 total)
  • The topic ‘Post list on admin not showing all posts’ is closed to new replies.