[WordPress] 関数が呼び出されたときの結果が表示されません。

スポンサーリンク

Question

プラグインを開発しているのですが、下記のショートコードがうまく表示されません。

<?php
add_action(‘admin_menu’,’hello_world_plugin’);
function hello_world_plugin (){
add_options_page(‘Hello Page’,’Hello Submenu’,’manage_options’,__FILE__,’Hello_Admin’);
}

//Insert Data
global $wpdb;
$first = $_POST[‘firstname’];
$last = $_POST[‘lastname’];
if(isset($_POST[‘Submit’])) {
$wpdb->insert(“wp_options”, array(
“option_name” => $first,
“option_value” => $last
)
);
echo ‘<script language=”javascript”>';
echo ‘alert(“Data Submitted!”)';
echo ‘</script>';
}

?>

<?php

function Hello_Admin() {

echo ‘<div class = “wrap”>';
echo ‘<h4> Hello World Plugin </h4>';
echo ‘</div>';

echo ‘<form action = “” method = “POST”>';
echo ‘<input type=”text” name=”firstname” placeholder=”First Name”>';
echo ‘<input type=”text” name=”lastname” placeholder=”Last Name”><br><br>';
echo ‘<input type = “submit” name = “Submit” value =”Submit to (wp_options)” class = “button-primary”><br><br>';
echo ‘<input type = “submit” name = “Display” value =”Display Data from (wp_options)” class = “button-primary”/><br><br>';
display();
echo ‘</form><br>';
}

function display(){
?>
<textarea cols=”50″ rows=”15″>

<?php
global $wpdb;
if(isset($_POST[‘Display’])) {
$result = $wpdb->get_results (
”
SELECT * FROM wp_options
WHERE option_id = ‘262’
”
);
print_r($result);
}

?>
</textarea>

<?php

}

?>

の答え

ワードプレスのプラグインについて多くを知りませんが、このコードは私に奇妙に見えます。関数 display() は文字列変数に格納し、変数に結果を追加します。

 $textarea = ‘<textarea…..>';
// your wordpress stuff to get the result here
$textarea .= $result;
$textarea .= ‘</textarea>';

その後、call $textarea var とecho display() しないでください;、Hello_Admin() のfunctionを実行します。

代わりに、Hello_Admin() 関数の他のエコー出力へ、textarea を追加し、display() 関数を使用して結果をもどします。

echo “<textarea…..>”.display().”</textarea”;

http://stackoverflow.com/questions/27652203/function-does-not-display-results-when-called

スポンサーリンク

Leave a Reply