为什么 Wordpress 无法识别我创建的函数?

Why is Wordpress not recognising the function I created?

我正在尝试创建一个包含两个变量的函数。一个变量是我想要悬停的文本,另一个变量是当我悬停在提到的第一个文本上时我想要显示的文本。我正在使用 Shortcodes Ultimate 中的以下简码来创建此函数:

[su_tooltip style="yellow" position="top" shadow="no" rounded="no" size="default" title="" content="Tooltip text" behavior="hover" close="no" class=""]Hover me to open tooltip[/su_tooltip]

我在functioins.php中写了如下函数:

function hov($x, $y)
{
    echo "[su_tooltip style= \"yellow\" 
     position=\"top\" 
     shadow=\"no\" 
     rounded=\"no\" 
     size=\"default\" 
     title=\"\" 
     content =strval($y) 
     behavior=\"hover\" 
     close=\"no\" 
     class=\"\"]$x'[/su_tooltip)]'";
}

我添加了反斜杠,因此代码忽略了引号。 我保存了这个功能。我在文本编辑器页面中尝试了 运行 这个功能,如下所示:

hov(arg1,arg2)

但它只是将“hov(arg1,arg2)”作为文字字符串发布。 知道我做错了什么吗?提前致谢。

如果您尝试在 HTML 中输入 hov('foo', 'bar');,那么它会将其输出为文本。

要从模板内部调用 PHP 函数,您需要开始和结束 PHP 标记。

因此,在您的模板中,要调用此函数,您将使用以下代码。

<?php hov('foo', 'bar'); ?>

如果你想调用 shortcode 那么你需要使用 echo do_shortcode(['...']);

<?php echo do_shortcode(hov('foo', 'bar')); ?>

修改后的答案

要通过在 post 编辑器中调用 运行 一个 PHP 函数,您需要创建一个 shortcode

短代码是使用 WordPress 函数创建的 add_shortcode 参见:https://developer.wordpress.org/plugins/shortcodes/

add_shortcode('hov', 'hov'); // create ['hov'] which calls hov()
function hov($args = [])
{
    return do_shortcode(sprintf('[su_tooltip style="yellow" position="top" shadow="no" rounded="no" size="default" title="" content="%s" behavior="hover" close="no" class=""]%s[/su_tooltip]', $args['y'], $args['x']));
}

用法示例

[hov y="foo" x="bar"] 其中 xy 作为 $args

中的项目传递