業務システム開発・オーダーメイドシステム開発・WEBシステム開発なら朝吉システムズにお任せください!

システム開発(大阪)朝吉システムズ

システム開発に関するお問い合せ・ご相談
わからないことも悩む前にお気軽にご相談下さい。
無料相談
事務所案内
リンク
サイトマップ
訪問サポートエリア
大阪市内
大阪府北部
箕面・池田・茨木・高槻・枚方・豊中・吹田・摂津・寝屋川・交野・守口・門真・四條畷
大阪府中部
大東・東大阪・八尾・藤井寺・柏原
大阪府南部
堺・高石・泉大津・和泉・岸和田・貝塚・泉佐野・泉南・阪南
大阪府東部
松原・富田林・河内長野・羽曳野・大阪狭山
奈良県 奈良・生駒他
兵庫県 神戸他

朝吉システムズTOP › welcart › welcartでcustom field templateプラグインを使う

welcart

welcart

welcart では公式に「カスタムフィールド系のプラグインには対応していません。」と表明しているのですがそう言われていても使いたい場面はあります。

そこで無理を承知でカスタムフィールドテンプレート系のプラグインを2つ試してみました。

結果:
WordPress 3.8.3 + Welcart 1.3.13 + Custom Field Template 2.2.1 は何とか使えました。
WordPress 3.8.1 + Welcart 1.3.13 + Custom Field GUI Utility 3.3.0 は使えませんでした。

お勧め出来ませんがどうしても使いたいんだという方の参考になるかもしれませんので書き残そうと思います。

まず、welcart では商品マスタ(商品情報)を投稿( post_type = post )として処理しています。
商品情報がカスタム投稿タイプで表現されているのではなく、通常の「投稿」と同じポストとして定義されていることは特徴的でとても重要なことなので覚えておいて下さい。

welcart でカスタムフィールドを使いたい場面は大きく分けて2つ考えられます。
一つはwelcartの「新規商品追加」にカスタムフィールドを追加したい場合、
もう一つはブログやニュースなどの用途で WordPress標準の「投稿」にカスタムフィールドを追加したい場合です。

【welcart「新規商品追加」にカスタムフィールドを追加したい場合】
取り敢えず動作するのですが次のような問題が発生しました。
新規商品追加で商品情報を入力して追加したカスタムフィールドにも入力を行い、「公開」ボタンを押下すると入力した筈のカスタムフィールドの情報が空になってしまいます。

Custom Field Template の「読込」ボタンを押せば入力した内容が表示されますが「公開」ボタン押下で入力した内容が空になってしまうのは好ましくありません。

WordPress 標準の「投稿」とWelcart「新規商品追加」は何が違うのか?
ざっと調べてみたところ、WordPress標準の「投稿」では入力された内容をサーバーに送信するものの画面自体は再描画していません。
一方 Welcart の「新規商品追加」では入力した内容をサーバーに送信し、画面全体を再描画しています。

入力した情報はサーバーに送られデータベースには保存されていますので「公開」ボタン押下時の再描画さえ補ってあげれば何とか使えそう、との判断で新規登録画面が表示される時にカスタムフィールド値を読み込むようにしました。(以下のコードを functions.php に記述)

以下のコードではカスタムフィールドテンプレートの TEMPLATE#0 が適用されている画面を決め打ちしていますので自分の環境に合わせて適時書き換えてください。

例)jQuery(‘#cft_0’).length // TEMPLATE#0 が適用されている時は真


/***********************************************************
* 管理画面に javascript を追加して強制的にカスタムフィールドテンプレートの値を読込
***********************************************************/
add_action('admin_head', 'my_add_admin_js');
function my_add_admin_js(){
/* カスタムフィールドテンプレート値強制読込 ----------------- */
echo <<<__EOF__
<script type="text/javascript">
  jQuery(document).ready(function() {
    if ( jQuery('#cft_0').length < 1 ) return;
    jQuery("#custom_field_template_select").val("0");
    jQuery.ajax({
      type: 'GET',
      url: '?page=custom-field-template/custom-field-template.php&cft_mode=ajaxload&id='+jQuery('#custom_field_template_select').val()+'&post='+jQuery('#post_ID').val(),
        success: function(html) {
          jQuery('#cft').html(html);
        }
    });
  });
</script>
__EOF__;
}

【WordPress標準の「投稿」にカスタムフィールドを追加したい場合】
追加することは出来ますが welcartの「新規商品追加」でカスタムフィールドを追加している場合はポストタイプが同じなので「新規商品追加」用に追加したカスタムフィールドも表示されてしまいます。

表示されるけど入力しないでね。という訳にもいかないのでブログをカスタム投稿タイプで作成し、標準の「投稿」は使わないようにしました。(「投稿」メニューも非表示に設定)

こうすることでブログの入力/編集については何とか出来たのですが月別アーカイブでハマりました。
長くなるので続きは次の記事で。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.

ページの先頭へ戻る