I try to achieve a menu like this (this is the actual menu).
There is a tree of projet coordinated by the wordpress menu that manage route and navigation.
Here is a scheme of the menu and the corresponding route.
PROJECT | |__ PAINT (SITE_URL/paint) | |__ post_1 (SITE_URL/paint/post_1) | |__ VIDEO (SITE_URL/video) |__ post_2 (SITE_URL/video/post_2) |__ post_3 (SITE_URL/video/post_2)
First of all, know that post_1, post_2 and post_3 are custom post type generated here by CPT UI.
As the route doesn't really exist while it's set in the wordpress menu as
Custom link (ie. /paint, /video in the below scheme). I use an action
do_parse_request in order to prevent the native
parse_request if the url match some of mine in my menu and let the
parse_request execute if not. (find my custom "router" in
fp_router.php also in the previous git gist
Here is my
functions.php (in the same git gist) in order to know the order of how it's executed.
The problem is:
When I load my class FP_Nav that is supposed to get all the item in the menu using
wp_get_nav_menu_items and that should be run before the headers are sent (because I need to parse the request using the menu items), this function
wp_get_nav_menu_items does not return any of my custom post that is set in the menu.
I declare my CPT in the action
init but I suspect that my class FP_Nav is loaded before the CPT is loaded because in the
index.php (template file), the menu got every fields and if I declare the CPT outside the
init action as well.
Also I have to load this class BEFORE the headers are sent so I can move out the CPT declaration outstide the
init action but I'm not sure it's a good idea and somehow I would like to produce good code so if there is another solution, I'm on!