do_shortcode打破格式化

时间:2017-10-25 20:22:44

标签: php wordpress shortcode

以前有人遇到过这个问题吗?直接从WordPress调用短代码并通过functions.php调用短代码会产生不同的结果。

请参阅此img:

Image 1具有不错的设计,因为它是直接从WordPress UI调用的,而Image 2以某种方式搞砸了设计,因为它是从php(functions.php)调用的。

其他信息:

  • 目前的主题是DIVI
  • 使用的Shortcode / Plugin是TableMaster

要添加更多信息,我在WordPress中有这行短代码(如图2所示)。

[get_blogs_sc]

在我的functions.php上,我有这个功能,

function GetActiveBlogs($i)
{ 

    $actual_link = (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";

    if (preg_match('/sites/',$actual_link))
    {

        $user_id = get_current_user_id();
        if ($user_id > 0) 
        {

            echo do_shortcode('[tablemaster buttons="true" datatables="true" class="black-header-gray-alternate-rows" sql="some select where user_id = '.user_id.'"]', true);
        }
    }
}


add_shortcode('get_blogs_sc', 'GetActiveBlogs');

但是当我直接从WordPress使用短代码时:

[tablemaster buttons="true" datatables="true" class="black-header-gray-alternate-rows" sql="some select where user_id = 14]

我页面上的显示效果很好(如图1所示)

我将短代码放在php-layer中的目的是让我能够从WordPress中捕获登录用户。

感谢。

1 个答案:

答案 0 :(得分:0)

很难从图像中诊断出问题所在!没有代码真正说的。 但是,让我们知道do_shortcodeadd_shortcode

之间的区别
do_shortcode( string $content, bool $ignore_html = false )

搜索内容以获取短代码并通过其挂钩过滤短代码。 它返回(字符串)过滤掉短代码的内容。

// Use shortcode in a PHP file (outside the post editor).
echo do_shortcode( '' );

了解更多信息,请查看link

while add_shortcode为短代码标记添加一个钩子。

<?php add_shortcode( $tag , $func ); ?>

$标签 (字符串)(必填)要在帖子内容中搜索的短代码标签 默认值:无 $ FUNC (可调用)(必需)在找到短代码时挂钩运行 默认值:无

它什么都不返回,但是当您在帖子区域中编写短代码标签时,它会应用短代码功能以获取更多信息,请检查Link