Nigel
Supporter
Languages:
English (English )
Spanish (Español )
Timezone:
Europe/London (GMT+00:00)
Hi Dave
Is it only after the last update—adding the ajax test—that those problems appeared?
If you revert to the previous version do they still happen?
The conditions I have proposed may not target the individual queries effectively enough, and I'm not sure that I am able to accurately target the ajax query in particular, I can take another look but it may be that using select2 while adding the code to show only the user's own parent posts may need to be a feature request.
Hi Nigel,
it comes also from the first code you provided me, but I didn´t look to homepage before where it is displayed so I have found this error yesterday. I placed this code into funtions.php so you can see the error on hidden link
Nigel
Supporter
Languages:
English (English )
Spanish (Español )
Timezone:
Europe/London (GMT+00:00)
OK, I'll take another look and get back to you.
I still have the site credentials in case I need them.
Nigel
Supporter
Languages:
English (English )
Spanish (Español )
Timezone:
Europe/London (GMT+00:00)
Hi Dave
Sorry for the delay getting back to you.
I've just taken a copy of your site so that I can install it locally to try and identify what the issue is, and I'll get back to you with what I find.
Nigel
Supporter
Languages:
English (English )
Spanish (Español )
Timezone:
Europe/London (GMT+00:00)
Hi Dave
On my local copy of your site I tested both the simplified version I initially gave you and the version that I provided that also works with ajax, i.e. this one:
/**
* Limit CRED parent post selector to own posts
*/
function filter_parent_posts( $query ){
$target_page = 981; // ID of page with CRED form, or string of page slug
$parent_post_type = "zazitek"; // slug of parent post type
$child_post_type = "varianta-zazitku"; // slug of child post type
if ( ( is_page( $target_page ) || is_singular( $child_post_type ) || ( defined('DOING_AJAX') && DOING_AJAX ) ) && $query->get( 'post_type') == $parent_post_type ) {
$current_user = get_current_user_id();
$query->set( 'author', $current_user );
}
}
add_action( 'pre_get_posts', 'filter_parent_posts' );
After installing the site I activated all of the Toolset plugins, nothing else, and then ran tests to check that the code worked as expected.
With each test I also loaded the home page, which you said was producing PHP errors when the code is active.
The code worked as expected, including when using select2 and updating the parent list via ajax, and there were no errors or warnings at any time in the debug.log.
It could be that there is some conflict with one of your other plugins, but as this is custom code that is not something I can debug. If you do some testing and identify a plugin which conflicts with this code sample I'd be curious to know which.
Hi Nigel,
I have updated all the Toolset plugins to the latest versions as well as Divi Theme, tried to deactivate all other plugins and the problem is still there. I have also edited the Child theme to the default state and added your latest function, but this also does not work.
Nigel
Supporter
Languages:
English (English )
Spanish (Español )
Timezone:
Europe/London (GMT+00:00)
Can you give me exact steps to reproduce the errors, because they don't appear on my copy of your site, even if I go ahead and activate the other plugins...
Hi Nigel, the only thing I do is placing the code into child functions.php.
Nigel
Supporter
Languages:
English (English )
Spanish (Español )
Timezone:
Europe/London (GMT+00:00)
Can I get the debug info from you?
https://toolset.com/faq/provide-debug-information-faster-support/
And, to confirm, you see the PHP message in your debug.log when adding the code I gave you and, what?, visiting any page on your site, front-end or back-end?
Hi, the error is not in debug.log, but I found it in error_log.txt. If I remove the function, nothing appears in log, but if I add the function and I visit the homepage, it will show 4 notices:
PHP Notice: Trying to get property of non-object in .../wp-includes/class-wp-query.php on line 3728
PHP Notice: Trying to get property of non-object in .../wp-includes/class-wp-query.php on line 3730
PHP Notice: Trying to get property of non-object in .../wp-includes/class-wp-query.php on line 3732
PHP Notice: Trying to get property of non-object in .../wp-includes/class-wp-query.php on line 3863
And 1 notice is displayed when I want to show any post type, e. g. hidden link
PHP Notice: Trying to get property of non-object in .../wp-includes/class-wp-query.php on line 3863
I haven´t seen it in backend or archive pages.
Nigel
Supporter
Languages:
English (English )
Spanish (Español )
Timezone:
Europe/London (GMT+00:00)
Hi Dave
That's odd, the warning messages show up in error_log.txt but not in debug.log ¯\_(ツ)_/¯
In any case, I did some digging, and the warning message shows up because of using is_page() in the pre_get_posts action.
It has been a known issue for some time and there are a number of WordPress trac tickets about this and related issues (e.g. https://core.trac.wordpress.org/ticket/21790).
The long and the short of it is that the code works as written, but is generating those warnings, which don't affect anything else.
It may be possible to rewrite the code so that it still functions as required without generating the warnings, but I'll leave that to you if you are worried about it.