如果我直接将其函数粘贴到模板文件中,则快捷代码不起作用?

时间:2011-03-07 作者:janoChen

这是在Question and Answer Forum plugin 对于Wordpress:

[question_form width=\\\'x\\\' bordercolor=\\\'x\\\' style=\\\'x\\\']question form title[/question_form]
此短代码称为:

//allow short codes  [question_form]
function question_form($atts,$content = "")
{
    global $questionformid;
    include "askquestionform.php";
    return $html;
}
add_shortcode(\'question_form\',\'question_form\');
这是askquestionform。php:

<?php
load_plugin_textdomain( \'qna-forum\', false, \'question-and-answer-forum/languages\' );
if(get_option(\'q_loginrequired_ask\')=="TRUE" && !is_user_logged_in())
{
    $html = "<p>".__("Please login to ask a question",\'qna-forum\')."</p>";
    $html .= q_loginform(get_permalink());
    return $html;
}

                                        //STYLING INFORMATION=============
$formstyle = "";
$introstyle = "";
if(isset($atts[\'width\']))
{
    $formstyle .= "width:" . $atts[\'width\'] . ";";
}
if(isset($atts[\'style\']))
{
    $formstyle .= $atts[\'style\'];
}
if(isset($atts[\'bordercolor\']))
{
    $formstyle .= "border: 2px solid " . $atts[\'bordercolor\'] . ";";
    $introstyle .= "background-color:" . $atts[\'bordercolor\'] . ";";
}

if(!isset($_POST[\'title\']) || $_POST[\'title\'] == null)
{
    $qtitle = __("Enter Question Title",\'qna-forum\');
}
else{
    $qtitle = $_POST[\'title\'];
}
if(!isset($_POST[\'question\']) || $_POST[\'question\'] == null)
{
    $Qtext = __("Enter Your Question Here",\'qna-forum\');
}
else{
    $Qtext = $_POST[\'question\'];
}

$html = \'<form class="questionform" name="questionform-\'. $questionformid . \'" id="questionform-\' . $questionformid. \'" style=\\\'\' . $formstyle. \'\\\'>

<div class="question-form-intro" style="\' . $introstyle . \'">\';
if($content != "")
{
    $html = $html . $content;
}
else
{
    $html = $html . __("Use the form below to ask a question",\'qna-forum\');
}
$html = $html . \'</div>\';
include_once (ABSPATH . \'wp-content/plugins/question-and-answer-forum/coreform.php\');
$html = $html . \'</form>\';

$questionformid = $questionformid + 1;
我创建了一个名为,question-form-page.php, 我粘贴了askquestionform.php 但不显示任何内容(空白)。

我还尝试在question-form-page.php:

question_form($atts,$content = "")
以及

global $questionformid;
include "askquestionform.php";
return $html;
但我得到了同样的结果。

有什么建议吗?

3 个回复
最合适的回答,由SO网友:Dalton Rooney 整理而成

我想你在找do_shortcode() 作用它允许您将短代码直接粘贴到模板文件中。

http://codex.wordpress.org/Function_Reference/do_shortcode

SO网友:keatch

正如道尔顿所写的,您正在寻找shortcode函数。您可以通过以下函数在php文件中使用短代码:

试着在你的question-form-page.php 文件:

<? echo do_shortcode(\'[question_form width=\\\'x\\\' bordercolor=\\\'x\\\' style=\\\'x\\\']question form title[/question_form]\'); ?>

SO网友:lightyoruichi

第一次在普通帖子上测试短代码是否真的有效。如果有,请在模板上使用此选项来运行它

<?php echo do_shortcode(\'[shortcode]\'); ?>

结束

相关推荐

How do you debug plugins?

我对插件创作还很陌生,调试也很困难。我用了很多echo,它又脏又丑。我确信有更好的方法可以做到这一点,也许是一个带有调试器的IDE,我可以在其中运行整个站点,包括插件?