如何在HTML标记内使用快捷码?

时间:2016-10-05 作者:ApolloLV

我尝试在原始html输出中包含带有参数的短代码,如下所示:

<a href="https://example.com/folder/edit.php?action=someaction&id=[foocode parameter=\'value\']&edittoken=[foocode parameter=\'othervalue\']">linktext</a>
这会使PHP函数崩溃do_shortcode().

这样的东西真的不能用短代码吗?

方法描述本身包含警告:

具有的用户unfiltered_html * 如果角括号嵌套在标记中,则功能可能会得到意外的输出。

然而,PHP崩溃并不是应该能够发生的意外输出。

PS:正在调用的函数是

function echocode( $atts ){
    return "Hello World";
}
并添加为

add_shortcode("foocode", "echocode");
该函数从不运行。(未打印起始回声码)

5 个回复
SO网友:Máximo Obed Leza Correa

希望这对某人有所帮助:

而不是这样做:<a href="https://example.com/folder/edit.php?action=someaction&id=[foocode parameter=\'value\']&edittoken=[foocode parameter=\'othervalue\']">linktext</a>

您可以执行以下操作:[foocode parameter1=value parameter2=othervalue] 然后执行以下操作:

add_shortcode( \'foocode\', \'prefix_foocode\' );

function prefix_foocode( $atts ) {

    // Normalize $atts, set defaults and do whatever you want with $atts.

    $html = \'<a href="https://example.com/folder/edit.php?action=someaction&id=\' . $atts[\'parameter1\'] .\'&edittoken=\' . $atts[\'parameter2\'] . \'">linktext</a>\';
return $html;
}

SO网友:Mark Kaplun

html属性中不允许使用短代码,短代码不是编程语言,它们是正确html内容的占位符。

SO网友:Crazycoolcam

值得一提的是,不接受任何参数的短代码似乎可以在HTML标记中工作。是那些有参数但没有参数的。

例如:<a href="https://example.com/folder/edit.php?action=someaction&id=[foocode parameter=\'value\']&edittoken=[foocode parameter=\'othervalue\']">linktext</a> 不起作用

例如:<a href="https://example.com/folder/edit.php?action=someaction&id=[foocode]&edittoken=[foo-other-code]">linktext</a> 确实有效(至少对我而言)

我使用了这样一个简单的快捷码来输出网站上图像的路径,这样我就不必每次都记住路径(我不使用媒体管理器)。

希望这对以后可能会无意中发现这个问题的人有所帮助。

SO网友:mukto90

请试试这个-

<a href="https://example.com/folder/edit.php?action=someaction&id=<?php echo do_shortcode("[foocode parameter=\'value\']"); ?>&edittoken=<?php echo do_shortcode("[foocode parameter=\'othervalue\']"); ?>">linktext</a>

SO网友:sheetal

要在原始HTML元素中执行短代码,必须找到通过短代码调用的回调函数,然后在原始HTML元素中回显该函数。

例如,如果您的短代码是[foo_code], 然后,通过查找此短代码的add\\u shortcode()(在本例中为[foo\\u code]),找出在执行此函数时正在回调的函数-

add_shortcode(\'foo_code\', \'foo_callback_function\');
现在,当您知道调用哪个函数时,只需在原始html中回显该函数,如:

[echo foo_callback_function();]
有关其工作原理的更多详细信息,请参阅checkoutthis answer.希望有帮助!

相关推荐

显示作者姓名PHP(自制插件)

我有一个需要帮助的问题,因为我自己找不到解决办法。我接管了一个网站,之前有人在那里创建了一个自制插件。。使用默认插件“Contact Form 7”,用户可以在页面上创建帖子。()https://gyazo.com/c8b20adecacd90fb9bfe72ad2138a980 )关于自行创建的插件“Contact Form 7 extender”,帖子是通过PHP代码在后台生成的(https://gyazo.com/115a6c7c9afafd2970b66fd421ca76a3)其工作原理如下:如果