最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

oop - Plugin Architecture Question: How to avoid using transients

programmeradmin3浏览0评论

I am creating an in-house plugin that will offer a filtering mechanism using AJAX for any post type depending on the configuration, which I have stored in a JSON.

When the plugin is loaded, I need to set the callback for the AJAX call, and I set that right away (I'm sticking to OOP):

$gfb = FilterBuilder::get_instance();
$action_filter_reg_instance = new ActionFilterRegistration();
$action_filter_reg_instance->add_action( 'wp_ajax_process_filters', $gfb, 'process_filters_callback' );

That sets the callback and it works fine...but that instance of $gbf is lost when the page that displays the posts loads and I need to set more properties when the template is loaded.

For instance, when the page that displays the posts loads, I create a new FilterBuilder object and pass it the query args which are then stored on the instance as a property of the class.

When the callback is invoked, it's dealing with its own instance of a FilterBuilder, so anything I defined in the template does not exist in this class instance.

This puts me in a bit of a pickle because I would like to have access to the query args that were defined when that particular instance was created.

I have resorted for the time being to use transients so I can have a common place to access the query args that the template instance defined from the callback function, but this just feels wrong. Furthermore, I believe transients have a max length and therefore this might explode if that limit is reached.

What other options are there? Maybe serializing the template class instance into a JSON and load it from the callback? That also sounds ... a bit meh.

I do not want to use global variables...interested in what you think would be an elegant approach to circumvent this issue.

Thanks for taking the time to read this!

发布评论

评论列表(0)

  1. 暂无评论