テーマの設定データは
http://codex.wordpress.org/Function_Reference/get_theme_mods
http://wpdocs.sourceforge.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_option
等の関数で、データベースから取得されるのが多いですが、ものによっては、まれに、WordPressのファイルシステム関数を使って、ファイルを書き換えるタイプのものもあったと思います。(公式テーマの範囲内で)
プレミアムテーマなどの場合は、どこになにを保存するかという問題は、フリーなので、テーマ内で、上記に関連する関数が使われているかどうかを、実際に、チェックするしかないのではないかと思います。
nobitaさん、ありがとうございます。関数についておいかけてみます。
調べてみたところ、wp_optionsにテーマ設定が保存されていました。
ファイル/ディレクトリのパーミッションではないということはわかりましたが、テーマ設定が保存できないというのは、どういった原因が考えられるのでしょうか?
update option などのコア関数が動作しないという事は、まずないので、
テーマ側であるとすれば、設定が post された時に、validate する関数があるはず(?)なので、その辺りの不具合がある可能性はあるんじゃないかと思います。
なんかの事情で、postされたデータをはじいているなどです。
カスタマイザーが動作する設定があるのであれば、sanitize_callback( よく出来たテーマの場合ですが )が記述されているので、その値が、validate 関数名になると思います。
関数名に、_validate などを手がかりに探してみてください。
ありがとうございます。ちょっと説明が足りなかったかもしれません。
テスト稼働させていたサーバ(CentOS6.4+PHP5.4+MySQL5.5)では問題なくテーマオプションの保存はできていました。本稼働サーバ(顧客の用意したVPSでCentOS6.3+PHP5.4+MySQL5.5)にWordPress 3.5.1をインストールし、プラグインやテーマファイルをテストサーバからftpでコピー。そして、phpMyAdminでDB内部をエクスポートして、SQL上でサーバ名などを書き換えてから、本稼働サーバにphpMyAdminを使ってインポートという手順で行いました。
そして、現象としては保存できない、というよりは、保存しにいって帰ってこない(Webブラウザから見て)という感じです(Ajaxなどでよく使われている保存してますグルグルアイコンが回ったままなので)。
失礼しました。本稼働サーバのMySQLのバージョンは5.0.82の間違いでした。
そして、現象としては保存できない、というよりは、保存しにいって帰ってこない(Webブラウザから見て)という感じです(Ajaxなどでよく使われている保存してますグルグルアイコンが回ったままなので)。
ajaxでの、データベースの操作はしたことがないのですが、ajaxのリクエスト先は、wp-admin/admin-ajax.phpになると思います。
なので、wp-admin/admin-ajax.php に、httpでリクエストが行えない場合などは、データの更新が出来ないということがあるんじゃないかと思います。
アクセス制限を確認してみてはどうでしょうか?
テストコード
テーマの,
functions.php
自信ないですけど、帰ってくる数値 1244になってれば、アクセスできてるのではないかと、、
<?php
add_action( 'admin_footer', 'my_action_javascript' );
function my_action_javascript() {
?>
<script type="text/javascript" >
jQuery(document).ready(function($) {
var data = {
action: 'my_action',
whatever: 1234
};
// since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
$.post(ajaxurl, data, function(response) {
alert('Got this from the server: ' + response);
});
});
</script>
<?php
}
add_action('wp_ajax_my_action', 'my_action_callback');
function my_action_callback() {
global $wpdb; // this is how you get access to the database
$whatever = intval( $_POST['whatever'] );
$whatever += 10;
echo $whatever;
die(); // this is required to return a proper result
}
?>
http://ja.forums.wordpress.org/topic/22654?replies=2
に、themeforest.net製のテーマで、保存が出来ないという質問がありました。
もし、解決できてましたら、そちらの質問の方のフォローお願いできませんか?
nobitaさん、ありがとうございます。まだ解決できていません…(アドバイスありがとうございます)。
functions.phpへのテストコードを適用して確認してみたところ、テーマオプションのページにアクセスしたときに
Got this from the server: 1244
が表示されました。その後、オプションを設定しSaveボタンを押すのですが、設定が反映されない状態になっています。
なお、themeforest自体は個人や小さな会社が作ったテーマを配布して、決済代行をしている会社なのでthemeforestがテーマ自体を作っているわけではないようです。
nobitaさん、みなさまありがとうございました。
テーマファイルがバージョンアップ(バグフィックス)したのですが、これにより保存ができるようになりました。テーマファイルのバグだったようです。
解決済みとさせていただきます。