web-dev-qa-db-ja.com

テンプレートファイルに直接その機能を貼り付けた場合、ショートコードが機能しません。

これは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;

しかし、私は同じ結果を得ます。

助言がありますか?

1
janoChen

do_shortcode()関数を探していると思います。ショートコードをテンプレートファイルに直接貼り付けることができます。

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

4
Dalton

ショートコードが実際に機能するかどうか、通常の投稿で最初にテストします。もしそうなら、それを実行するためにあなたのテンプレートでこれを使ってください

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

ダルトンが書いたように、あなたはショートコード機能を探しています。あなたはこの関数を通してあなたのphpファイルでショートコードを使うことができます:

この行をquestion-form-page.phpファイルに入れてみてください。

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