簡體   English   中英

編輯wordpress樣式表並使用php和ajax保存

[英]Edit a wordpress stylesheet and save using php & ajax

我想在我的網站上創建一個設置部分,以便我可以更改樣式,因此,如果我選擇藍色,它將背景更改為藍色並保存外部樣式表,以便當我重新加載頁面時,它仍然是藍色。

我不知道如何執行此操作,因此目前僅是基本代碼。

我知道我需要html復選框代碼,然后jquery會記下正在選擇的內容,ajax和php然后將更新樣式表。

我只是不知道怎么辦?

這是HTML代碼

<div class="container">
  <input type="radio" name="colours" value="red" checked> red
  <input type="radio" name="colours" value="blue">blue
</div>

這是CSS

* {
padding:0;
margin:0;
}
html, body {
width:100%;
height:100%;
}
.container {
width:100%;
height:100%;
background:red;
}

這是我到目前為止擁有的php:

// edit these values to match your database information
$server = "localhost";
$user = "******";
$password = "*******";
$db = "******";

$con = mysql_connect($server,$user,$password); 

if (!$con) {
die("database connection error");
} else {

mysql_select_db($db, $con);

$file = 'get_site_url();/style.css';
// Open the file to get existing content
$current = file_get_contents($file);

// Write the contents back to the file
$test = file_put_contents($current, $current);

echo '

<form action="" method="POST">
<textarea name="stylesheet">'. $current .'</textarea>
<input type="submit">
</form>
';

}
mysql_close($con);
?>

除了一般性警告,以限制整個面板使用此面板之外,您還需要先檢查提交的表單。 您可能要檢查$ _POST ['submit']並為“提交”按鈕指定一個名稱:

<form action="" method="POST">
<textarea name="stylesheet"><?php echo $current; ?></textarea>
<input type="submit" name="submit" value="Submit">
</form>

然后在PHP中檢查是否設置了Submit:

if(isset($_POST['submit']))
{
    $fp = fopen( get_site_url() .'/style.css', 'w');
    fwrite($fp, $_POST['stylesheet']);
    fclose($fp);
}

不知道這里需要什么sql,但是您沒有使用該連接。 整個事情是:

<?php
if(isset($_POST['submit']))
{
    $stylesheet = $_POST['stylesheet'];
    $stylesheet = preg_replace('/(background:)(.*)(;)/', '$1'.$_POST['colours'].'$3', $_POST['colours'], $stylesheet);
    $fp = fopen( get_site_url() .'/style.css', 'w');
    fwrite($fp, $stylesheet);
    fclose($fp);
}
else
{
    $filename = get_site_url() .'/style.css';
    $handle = fopen($filename, "r");
    $stylesheet = fread($handle, filesize($filename));
    fclose($handle);
}
?>
<form action="" method="POST">
<textarea name="stylesheet"><?php echo $stylesheet; ?></textarea>
<input type="radio" name="colours" value="red" checked> red
<input type="radio" name="colours" value="blue">blue
<input type="submit" name="submit" value="Submit">
</form>

假設get_site_url()解析為該文件的服務器路徑。 您可能要使用$_SERVER['DOCUMENT_ROOT'] . '/style.css' $_SERVER['DOCUMENT_ROOT'] . '/style.css'具體取決於此文件的實際位置。

另外,本示例還假定您從樣式表的內容開始。 您可以使用正則表達式來查找和替換要編輯的樣式的值。 您將希望在實際情況下更具體,因為這將替換background:和;之間的任何內容。

這是在wp插件中使用ajax的鏈接: http : //codex.wordpress.org/AJAX_in_Plugins

設置充當您的ajax需求的請求處理程序的插件非常簡單

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM