Opened 4 years ago
Last modified 4 years ago
#54525 new enhancement
URL Object
| Reported by: |
|
Owned by: | |
|---|---|---|---|
| Milestone: | Awaiting Review | Priority: | normal |
| Severity: | normal | Version: | |
| Component: | General | Keywords: | |
| Focuses: | Cc: |
Description
hi
i would to suggest to wordpress to build a wordpress URL_Object who implement url distribution logic like theses.
example : this url : " http://localhost/author/admin/ ”
{
base_url : http://localhost/author/admin/
protocol : http
root : localhost
full_path:author/admin/
template : author.php
/**...some stuff*/
{child
path:author
path_type:users_list
{child
path:admin
path_type:user_name
{user_object:WP_user
/*...data from WP_user*/
}
}
}
}
another example with this url : “ http://localhost/2021/10/20/my_comment/ "(a comment url)
{
base_url : http://localhost/2021/10/20/my_comment/
protocol : http
root : localhost
full_path:2021/10/20/my_comment/
template : comments.php
/**...some stuff*/
{child
path:2021
path_type:date(year)
{child
path:10
path_type:date(month)
{child
path:20
path_type:date(day)
{comment_object:WP_Comment
/*...data from WP_Comment like*/
comment_ID:""
comment_post_ID :""
comment_author :""
comment_author_email :""
/***...and more */
}
}
}
}
}
another example with this url : http://localhost/vehicle/car/
{
base_url : http://localhost/vehicle/car/
protocol : http
root : localhost
full_path:vehicle/car/
template : category.php
/**...some stuff*/
{child
path:vehicle
path_type:category
parent_category:none
{child
path:car
path_type:category
parent_category:vehicle
{object_array
/*...listed object for this category*/
{object_1:car_with_4_wheels
/*object fields and data */
color:""
wheels:""
type:""
motor:""
gear_ratio:""
/**...and more*/
}
{object_2:car_with_3_wheels}
{object_3:car_with_5_wheels}
/***...and more */
}
}
}
}
the underlying idea is to give us the possibility to know where url part come from, to make more flexible and logic routing.
to explain a little bit my purpose , we will move to : http://localhost/vehicle/car/my_black_car_with_four_wheels
we can get this object :
{
base_url : http://localhost/vehicle/car/
protocol : http
root : localhost
full_path:vehicle/car/
template : category.php
/**...some stuff*/
{child
path:vehicle
path_type:category
parent_category:none
{child
path:car
path_type:category
parent_category:vehicle
{object:car_object
/*object fields and data */
color:black
wheels:4
type:sportive
motor:950ch
gear_ratio:6
/**...and more*/
}
}
}
}
in addition, the possibilites to create wordpress routing from this object will be a good idea. i'll try to give you an example : we want to create a user car space with this url format :
http://localhost/user/vehicle/cars
/**first we will create this object*/
$my_url_object = new url_object(/${root}/${users}/${category:vehicle}/${category:cars});
this action will instantiate the url object and the routing logic at the same time, so we will get this url_object
{
base_url : http://localhost/user/vehicle/car
protocol : http (will depends form the server config)
root : localhost
template : ""
/**...some stuff*/
{child
path:user
{user_object:WP_user
/**data from WP_user */
data:""
ID:""
caps:""
roles:""
/**... and more */
}
{child
path:vehicle
{category_object : vehicle
/**data from vehicle object */
}
{child
path:car
{category_object:car
/**data from car object */
/**for example:*/
color:""
wheels:""
type:""
wheels_size:""
motor:""
gear_ratio:""
/**...and more*/
}
}
}
}
}
the only last thing we have to do is to decide which template will be used:
$my_url_object->set_template(user_car.php)
Change History (2)
#2
@
4 years ago
the actual problem in wordpress is when we catch any url, we can't know how it was build by wordpress-core.
by the way, if we catch an url like " http://localhost/supersonic " we can't use this url to make a real routing, because we don't know how wordpress have build it.
So we can't know if " /supersonic" refer to a user_name, tu a user_product, to a category, or to any other item.
convertly if in the url object we could get something like:
/**...*/ path: "supersonic" => refer_to: WP_user //for example
we could make routing more efficiently
Hi there, welcome back to WordPress Trac! Thanks for the ticket.
Just linking to some potentially related tickets here: #12935, #18276, #36292, #41145.