如何将WP_QUERY结果传递给插件?

时间:2020-08-20 作者:armadadrive

如何传递WP_Query 调用插件?我试图通过一个shortcode属性传递数据,但我得到了错误;WP\\U查询类的对象无法转换为字符串;。

E、 g.:

$args = array(
// ...
);

$the_query = WP_Query($args);

echo do_shortcode( [example_custom_plugin query_payload="\' . $the_query . \'"] );
插件检索WP模板设置的变量(可能是对象或数据数组)有哪些不同的方法(建议最好的方法)?

在我的例子中,我的插件是通过shortcode调用实例化的,因此我从这个角度来处理它;我希望插件在实例化时具有WP\\u查询的结果。

2 个回复
SO网友:NightHawk

我认为对于所见即所得编辑器中非技术用户通常使用的短代码,最好保持参数简单:

[custom-shortcode color="red" size="medium"]
换言之,短代码旨在提供最终用户可以在其内容中的某处放置的功能,并可以选择提供一些不同的自定义。

为了得到像WP_Query 结果,我会使用:

global $wp_query;
这使您可以访问在运行快捷码时正在执行的当前查询。您可以在短代码将调用的函数中实现这一点。

如果需要对不同的数据进行完全自定义的查询,实际上可以创建一个新的WP_Query:

function custom_shortcode() {
  $params = [];
  $q = new WP_Query($params);
  // ...
}
因此,插件最好是查找或获取数据,而不是期望传递数据。情况并非总是这样,但就你所介绍的而言,这似乎是最好的途径。

SO网友:Movs

使用全局变量只传递$args,并在插件内部运行相同的查询,序列化结果并按需要传递它如果我是你,我更喜欢第二种方式。。。

相关推荐

What does this shortcode do?

function my_shortcode($atts, $content = null){ extract(shortcode_atts(array(\"type\" => \"warrning\"), $atts)); return \".$content.\"; } add_shortcode(\"warrning_dialog\", \"my_shortcode\"); 我知道它会创建短代码[warning\\u dialo