Wordpress-一个显示带有短代码的HTML内容(数据库)的插件

时间:2017-08-20 08:47:04

标签: php html css wordpress

我在Google表格中运行了一个包含数据库的项目。我需要在交互式表格中显示该信息。

我使用Sheetrock.js和Handlebar.js来做这个(我写了代码,它按照我的意愿工作)。我有一个WordPress网站,我想制作一个插件,我输入一个短代码,我编码的表格出现在页面上。

我有一个带嵌入样式的单独HTML文件(在<style></style>标签下,没有外部css文件)。该文件有一个HTML样板,在<head></head>中有sheetrock.js,handlebar.js和bootstrap的链接。

据我了解,php无法显示这些HTML标签? 我试着做以下......

<?php
function showIco() {
?>
<!DOCTYPE html>
<head>
<!-- all the CDN links  -->
</head>
<style>
<!-- all the styling is here, and I know, it's not DRY -->
</style>
<body>
<!-- The content I want to display (it has <script> tags, and variables) -->
</body>
</html>
<?php
return showIco();
}
add_shortcode ('add_ico','showIco');
?>

也许我做错了,因为短代码根本没有显示内容。我需要做些什么来完成这项工作?

2 个答案:

答案 0 :(得分:0)

您将返回该函数,这将导致递归。

尝试:

<?php
function showIco() {
    ob_start();
?>
<!DOCTYPE html>
<head>
 all the CDN links
</head>
<style>
all the styling is here, and I know, it's not DRY
</style>
<body>
The content I want to display (it has <script> tags, and variables)
</body>
</html><?php
    return ob_get_clean();
}
add_shortcode ('add_ico','showIco');
?>

答案 1 :(得分:0)

这是因为您试图在短代码中返回整个HTML文档,该短代码本身已经在HTML文档中。

对于头部内的脚本,您应该使用enqueue方法并在使用短代码时返回它们,然后从HTML中删除head / body / html标记。

<?php
function show_ico_scripts() {
        wp_register_script("show-ico-scripts", "//link-to-CDN-here", array(), "1.0", false);
    }
    function showIco() {
        wp_enqueue_script( 'show-ico-scripts' );
        ob_start();
    ?>
    <style>
    all the styling is here, and I know, it's not DRY
    </style>
    The content I want to display (it has <script></script> tags, and variables)
    <?php
        return ob_get_clean();
    }
    add_shortcode ('add_ico','showIco');