You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I have registered 2 custom post types, A and B and custom taxonomy for A say A_type.
Then I connect 3 A items to B.
There is 2 custom post types(skipped) and one custom taxonomy for A (A_type)
$slug = 'A_type';
MB_Relationships_API::register(
array(
'id' => 'A_to_B',
'from' => array(
'object_type' => 'post',
'post_type' => 'A',
'admin_column' => 'after title',
),
'to' => array(
'object_type' => 'post',
'post_type' => 'B',
'admin_column' => 'after title',
),
)
);
$query_args = array(
'post_type' => 'B',
'posts_per_page' => -1,
);
$all_Bs = new WP_Query( $query_args );
// This gives all results without problem, all connected A will be put into `connected_A`.
MB_Relationships_API::each_connected(
[
'id' => 'A_to_B',
'to' => $all_Bs->posts,
'property' => 'connected_A', // B post object result with this property
],
);
Up to this point, everything works fine.
If I want to filter specific taxonomy A_type from the above, I could add tax_query parameters.
I add the following into the each_connected 2nd argument.
Because according to the source code of each_connected, the 2nd argument takes usual WP_Query arguments which will be eventually put on WP_Query class to run.
However, the result have one problem.
Assume that there are 3 items from A connected to B.
Only the first one(In the dragging order of the relationship menu, only the top item) connected to respective A will be found and put in connected_A. i.e. If A1 is connected to B1, B2, B3 respectively, in the order of connection menu, if B2 is the first one. Then there is no connected_A result for B1 and B3 and the connection will be regarded and put to B2 connected_A only.
It seems that the query cannot see the other connected items with different order if introducing tax_query parameters.
I think it might be related to the table join(inner join, left join and so on), because I am not an expert to the MySQL language, my analysis could only be up to this point.
Hopefully someone could help in finishing the remaining bug fixing or limitation fixing work.
Thanks in advance.
For reference purpose, I have copied the query request from the var_dump for further investigation.
# This is the query without tax_query parameter
SELECT prefix_posts.* , mbr.to AS `mbr_A_to_B_to` FROM prefix_posts
INNER JOIN prefix_mb_relationships AS mbr ON (mbr.from = prefix_posts.ID AND
mbr.type = 'A_to_B' AND
mbr.to IN (352,374,348,290,277,327,328))
WHERE 1=1 AND ((
prefix_posts.post_type = 'A' AND
(prefix_posts.post_status = 'publish'
OR prefix_posts.post_status = 'private')))
GROUP BY `mbr_A_to_B_to`, prefix_posts.ID ORDER BY mbr.order_to
# This is the query using tax_query parameter
SELECT prefix_posts.* , mbr.to AS `mbr_A_to_B_to` FROM prefix_posts
LEFT JOIN prefix_term_relationships ON (prefix_posts.ID = prefix_term_relationships.object_id)
INNER JOIN prefix_mb_relationships AS mbr ON (mbr.from = prefix_posts.ID AND
mbr.type = 'A_to_B' AND
mbr.to IN (352,374,348,290,277,327,328))
WHERE 1=1 AND (
prefix_term_relationships.term_taxonomy_id IN (23)
) AND ((prefix_posts.post_type = 'A' AND
(prefix_posts.post_status = 'publish'
OR prefix_posts.post_status = 'private')))
GROUP BY prefix_posts.ID, prefix_posts.ID ORDER BY mbr.order_to
The text was updated successfully, but these errors were encountered:
Here is the setup for the testing.
I have registered 2 custom post types,
A
andB
and custom taxonomy for A sayA_type
.Then I connect 3 A items to B.
Up to this point, everything works fine.
If I want to filter specific taxonomy A_type from the above, I could add tax_query parameters.
I add the following into the
each_connected
2nd argument.Because according to the source code of
each_connected
, the 2nd argument takes usual WP_Query arguments which will be eventually put on WP_Query class to run.However, the result have one problem.
Assume that there are 3 items from A connected to B.
Only the first one(In the dragging order of the relationship menu, only the top item) connected to respective A will be found and put in connected_A. i.e. If A1 is connected to B1, B2, B3 respectively, in the order of connection menu, if B2 is the first one. Then there is no connected_A result for B1 and B3 and the connection will be regarded and put to B2 connected_A only.
It seems that the query cannot see the other connected items with different order if introducing
tax_query
parameters.I think it might be related to the table join(inner join, left join and so on), because I am not an expert to the MySQL language, my analysis could only be up to this point.
Hopefully someone could help in finishing the remaining bug fixing or limitation fixing work.
Thanks in advance.
For reference purpose, I have copied the query request from the var_dump for further investigation.
The text was updated successfully, but these errors were encountered: