将插件html内容插入到首页中的特定位置

时间:2017-08-04 作者:Livi17

我正在尝试将插件html内容插入到网站首页的特定位置。该网站使用Divi主题。

我尽量避免将任何代码放在原始Wordpress或Divi主题文件中,以免任何更新都会删除代码。

question 有点像我的,但我不认为我需要做什么有什么挂钩。

我可以在我的插件中使用此代码将插件内容显示在frontpage的顶部。(我简化了插件代码,以节省这个问题的空间)

add_action( \'template_redirect\', \'insert_img\' );

function insert_img() {
   echo "<img src=\'$url\'>";
}
但是,更可取的做法是在frontpage顶部的滑块之后显示内容。

最终,如果我能让插件在这个节点之后插入它的内容,特别是在.et_pb_section 如果可能,请在DOM中进行注释:

//this node contains the slider
<div class="et_pb_section et_pb_fullwidth_section  et_pb_section_0 et_section_regular">

   //lots of slider code here has been removed to save space

</div>
<!-- .et_pb_section -->

// would prefer to have plugin content appear here

//this is the next node in the DOM
<div class="et_pb_section  et_pb_section_1 et_section_regular">
    // code removed
</div>

1 个回复
最合适的回答,由SO网友:Livi17 整理而成

因为一旦站点完成,frontpage上的DOM元素将永远不会改变,所以我想到的解决方案是使用javascript找到我想在插件内容中遵循的div,然后只需将我的html内容附加到div的末尾,如下所示:

$imageMap = "<div style=\'width:1080; margin:0 auto;position:relative;top:20px;margin-bottom:20px\'><img src=\'$url\'></div>";
echo \'<script>
    document.addEventListener("DOMContentLoaded", function(event) {
    var el = document.getElementById("main-content").getElementsByTagName("div")[1];
    el.innerHTML += "\'.$imageMap.\'";
});
</script>\';

结束

相关推荐

Hooks are not executing

根据我对钩子的理解,您可以通过do\\u action(“hook\\u name”)创建一个钩子;然后向所述钩子中添加一些内容,并在希望它执行钩子的位置调用该方法,因此:public function hook_name(){ do_action(\'hook_name\'); } 有些地方你会做类似的事情:add_action(\'hook_name\', \'some_hook\'); 然后在主题中的一些地方,你称之为:hook_name();