我正在尝试实现以下功能。
我有几个小部件“区域”,可以将小部件放在其中。我将这些小部件区域编程为我网站的主题,我可以在管理面板中打开和关闭它们。小部件区域基本上是我网站上的部分,我将文本小部件放入其中,并将广告放入这些文本小部件中。小部件区域还填充了其他分类内容(新闻稿注册表、最受欢迎的帖子等)。
我正在使用一个插件来管理我的广告(http://wordpress.org/plugins/ads-by-datafeedrcom/ ) 它有很好的功能。我将短代码放入文本小部件中,广告就会按预期显示出来。
我需要能够从这个插件生成的db查询中排除广告。我可以在短代码中作为属性传递要排除的广告-这不是问题。
我的问题是,我需要获取短代码显示的广告的ID。我希望短代码返回短代码文本内容和一组排除的广告,这些广告包含当前广告和任何以前的广告(这将防止重复广告出现在网站上)。
然后,我将通过属性和全局变量将这个被排除ID的数组传递到下一个短代码中。
我的问题是:短代码能否返回字符串以外的任何内容?我的设置(调用广告、文本小部件、通过启用小部件区域管理广告放置的短代码)是否无法维持?
我已经做到这一点了
[dfads params=\'groups=1234&ad_class=sidebar-ad&limit=1&orderby=random&excluded_ads=1,4,6\']
这叫做
function dfads_shortcode( $atts ) {
return dfads( $atts[\'params\'] );
}
dfads
退货
get_ads
和
get_ads
返回此
return array($this->output( $ads, $this->args ), $excluded_ads);
因此,我返回一个包含字符串的数组($this->output)(&;array($excluded\\u ads),我想显示字符串并捕获数组以传递到下一个短代码。
我应该在循环中的代码中完成这一切吗?是否可以从小部件中获得此功能&;短代码?
--更新1
我注意到有[方法]http://www.emanueleferonato.com/2011/04/11/executing-php-inside-a-wordpress-widget-without-any-plugin/ 用于在小部件中运行php代码。
如果这是一个管理员专用功能,那么它是否安全?我仍然可以访问全局变量吗?执行流是否基本上与我在页面流中的php代码相同,在页面流中显示的是小部件而不是小部件?
我可以在显示的页面中执行所有这些操作,但通过在小部件/仪表板中使用这些内容,对管理来说似乎要干净得多。
最合适的回答,由SO网友:s_ha_dum 整理而成
我认为你提出的解决方案,或攻击计划,远比它需要的复杂得多。您可以使用静态变量来管理它。概念验证:
function shortcode_with_static_data($atts,$content) {
static $ids;
$ids[] = time();
var_dump($ids); // you should return a string not dump data in a real shortcode
}
add_shortcode(\'scwsc\',\'shortcode_with_static_data\');
您需要创建自己的短代码,类似于上述内容,并将其用作add data短代码或相关函数的包装器。如果没有看到插件代码,我真的无法确切地说出它是什么样子。