我创建了一个简单的 Wordpress 插件,它将文本数据存储在数据库中
if(isset($_POST['staticbox_submit'])) {
$sql = "UPDATE staticbox SET content = '".$_POST['staticbox_content']."';";
if(!$wpdb->query($sql)) {echo '<p style="color:#990000;">Fehlgeschlagen.</p>';} else {echo '<p style="color:#009900;">Ausgeführt.</p>';}
}
并在前端输出
function staticbox() {
global $wpdb;
$staticbox_content = $wpdb->get_col( "SELECT content FROM staticbox" );
foreach($staticbox_content as $item) {echo $item;}
}
我在表单中有一个文本区域和按钮。如果设置了按钮的后变量,它将文本存储在数据库中。
<form action="?page=staticbox/main.php" method="post">
<textarea name="staticbox_content" cols="100" rows="10"><?php $staticbox_content = $wpdb->get_col( "SELECT content FROM staticbox" ); foreach($staticbox_content as $item) {echo $item;} ?></textarea><br />
<input type="submit" name="staticbox_submit" />
</form>
出于任何原因,文本在数据库中存储了 3 次。你能帮我找出问题吗?
这是一些截图
我在后端输入的内容
它在 MySQL 中的样子
它在前端的样子
编辑: 继承人整个文件:
<?php
/*** WIRD BEIM AKTIVIEREN AUSGEFÜHRT ***/
function staticbox_activate() {
$sql = "
CREATE TABLE IF NOT EXISTS `staticbox` (
`content` text NOT NULL
)";
global $wpdb;
$wpdb->query($sql);
}
register_activation_hook( __FILE__, 'staticbox_activate' );
/*** WIRD BEIM DEINSTALLIEREN AUSGEFÜHRT ***/
function staticbox_uninstall() {
$sql = "DROP TABLE `staticbox`";
global $wpdb;
$wpdb->query($sql);
}
register_uninstall_hook( __FILE__, 'staticbox_uninstall' );
/*** DIE FRONTEND FUNKTIONEN ***/
function staticbox() {
global $wpdb;
$staticbox_text = "<strong>Überschrift</strong><p>Der Text wurde hier eingefügt</p>";
$staticbox_text_html = utf8_encode($staticbox_text);
$staticbox_content = $wpdb->get_col( "SELECT content FROM staticbox" );
foreach($staticbox_content as $item) {echo $item;}
}
/*** DIE BACKEND FUNKTIONEN ***/
function staticbox_admin() {
global $wpdb; ?>
<div class="wrap">
<h2>Staticbox</h2>
<p>Hier können Sie der Staticbox Inhalt geben, welcher dann im Frontend ausgegeben wird.</p>
<p>Dies erfolgt durch das Einspeisen folgender Funktion an einer beliebigen Stelle im Theme des Blogs:</p>
<code>
if ( function_exists ( staticbox() ) ) {
staticbox();
}
</code>
<p> </p>
<h3>Inhalt einfügen</h3>
<form action="?page=staticbox/main.php" method="post">
<textarea name="staticbox_content" cols="100" rows="10"><?php $staticbox_content = $wpdb->get_col( "SELECT content FROM staticbox" ); foreach($staticbox_content as $item) {echo $item;} ?></textarea><br />
<input type="submit" name="staticbox_submit" />
</form>
<?php echo $_POST['staticbox_content']; ?>
</div>
<?php
if(isset($_POST['staticbox_submit'])) {
$sql = "UPDATE staticbox SET content = '".$_POST['staticbox_content']."';";
if(!$wpdb->query($sql)) {echo '<p style="color:#990000;">Fehlgeschlagen.</p>';} else {echo '<p style="color:#009900;">Ausgeführt.</p>';}
}
echo $sql;
}
/*** DIE MENÜS WERDEN HINZUGEFÜGT ***/
function staticbox_menu() {
add_menu_page('Staticbox', 'Staticbox', 10, __FILE__, 'staticbox_admin');
//add_submenu_page(__FILE__, 'Bloggerei', 'Bloggerei', 10, 'bloggerei', 'bloggerei');
}
add_action('admin_menu', 'staticbox_menu');
?>