第一个问题是挂接调用以将脚本排队。将该行更改为。。。
function hooks() {
add_action(\'wp_enqueue_scripts\', array($this, \'load_av_slider\'));
}
还有一个明显的遗漏,我本打算忽略它。您没有实例化类的对象。我假设您只是没有在示例中包含它,但如果您只是忘记了这么做,那么肯定会导致永远不会加载脚本,因为永远不会调用构造函数。
我的建议如下。。。
class AV_Slideshow {
function __construct() {
$this->hooks();
}
function hooks() {
add_action(\'wp_enqueue_scripts\', array($this, \'load_av_slider\'));
}
function load_av_slider() {
wp_register_script(\'av-slideshow\', get_bloginfo(\'stylesheet_directory\') . \'/js/AV-Slideshow/av_slideshow.js\', array(\'jquery\'));
wp_enqueue_script(\'av-slideshow\');
}
function build_slideshow($slides) {
if (!$slides) {
$slideshow = \'No posts are selected for this slideshow.\';
}
$slideshow = \'<div id="slides"><div class="slides_container">\';
foreach ($slides as $post_id) {
$post = get_post($post_id);
$title = $post->post_title;
$content = $post->post_content;
$slideshow .= \'<span>\' . $title . \'</span><span>\' . $content . \'</span>\';
}
$slideshow .= \'</div></div>\';
return $slideshow;
}
}
$avs = new AV_Slideshow();
add_shortcode(\'slideshow\', array($avs, \'build_slideshow\'));
如果你要使用
$this
引用,您肯定需要实例化类的对象。之后,您可以继续以静态方式传递上下文参数,但是如果您继续扩展代码,以后可能会导致混淆。除非你是故意的
build_slideshow()
静态,而rest目标由于特定的原因,您应该坚持其中之一。没有太多的理由去客观化,但我一直这样,因为这就是你所拥有的。