• かちびと.net

    ユーザーからの記事の寄稿を簡略化するWordPressプラグイン・User Submitted Postsと文字化けの直し方をご紹介します。寄稿者がフォームを送信すればそのまま下書きに保存されます。なかなか需要がありそうな気もします。

    Kudos for

    WordPress jQuery
  • About This

    Web制作に役立つTips、チュートリアル、、マーケティングに役立つ情報などのリソースをほぼ毎日配信しています。宜しければメモ代わりにご利用下さい。詳しい情報はAbout me またはhumans.txtをご覧下さい。

    Kachibito.net is a community-based website for web designers and developers. The site includes a popular weblog, a design gallery, a open source software, design tips, and the various web-news.

  • Links

ユーザーからの記事の寄稿を簡略化するWordPressプラグイン・User Submitted Postsと文字化けの直し方

スポンサーリンク

なかなか需要がありそうだったので
備忘録的にご紹介。WordPressを
使っているWebサイトで、最近でも
よく寄稿者を募っているところを見か
けますが、その記事の寄稿を簡略化
出来る、というプラグインです。寄稿者
をユーザー登録する必要もありません。

User Submitted Postsはコンタクトフォームから寄稿すれば、その内容がそのまま下書き記事として保存してくれるので管理側は寄稿記事を管理しやすく、やり方次第で寄稿者側も寄稿するハードルが低くなるかも知れませんね。

メールなどによる寄稿者とのやりとりが無いので結構楽になるんじゃないですかね。設定もいろいろ出来るのでマルチユーザーサイトやニュース、マガジンサイトに良さそうですよ。

User Submitted Posts


コンタクトフォームから直接寄稿できるようにするプラグインです。寄稿記事の管理もしやすくなりそう。

使い方

使い方は簡単で、プラグインを有効化し、設定後にフォームを設置するだけ。フォームの設置は

[user-submitted-posts]

というショートコードを「ページ」等で使うか、

<?php if(function_exists('public_submission_form')) public_submission_form(true); ?>

テンプレートファイルで使いたい場合は上記コードを挿入すればOKです。

スクリーンショット


フォームの英語部分はview/submission-form.phpファイル内を日本語に修正すれば良さそうです。


フォームで送られた内容がそのまま記事になってくれます。上図はレビュー待ちになっていますが、設定を変えれば寄稿→直ぐに記事アップにすることも可能です。

セッティング


プラグインを有効化するとセッティングできるようになります。簡単に解説しますので分からない項目は確認してみてください。

Customize Form Display

寄稿フォームに含める項目です。

  1. User Name / 寄稿者の名前
  2. 投稿の URL / 多分勝手に日本語になります。
  3. Post Title / 記事タイトル
  4. 投稿タグ / タグです。自動で日本語化します。
  5. Post Category / カテゴリ
  6. Post Content / 記事内容
  7. Post Images / 画像

上記をフォームに含めるかどうかをそれぞれ決めます。

Upload Message

Post Images(画像)をフォームに含めた場合に、画像のアップロード箇所に挿入するテキストです。画像のファイルサイズなんかを説明する時に。

Error Message

項目の入力不備等で表示されるエラーメッセージです。デフォルトでは英語なので必要に応じて変更してください。

Assigned Author

寄稿記事をどのユーザーにあてるか、を決めます。記事では寄稿者の名前を入力項目に含めた場合、寄稿者の名前が表示されますが、実際にユーザーが増えるわけでは無く、管理者をここで振り分ける形になります。

Redirect URL

フォーム送信後にサンキューページに飛ばしたい、などの際に利用するリダイレクト項目です。リダイレクトさせたいURLを入れて下さい。なければ空白で問題ありません。尚、リダイレクト先のURLには?success=nといったパラメーターが付きます。

Automatically Publish

寄稿された記事をそのまま直ぐに公開させるか、下書きにするか、などを決めます。個人的には下書きにしておくことをお勧めします。

カテゴリー

寄稿者が選択できるカテゴリーを決めます。複数選択できます。新しく作るのが一般的ですかね・・

Minimum Number of Images

Post Images(画像)をフォームに含めた場合に、最低アップロードする画像の数です。画像数が足りない場合はエラーを表示します。

Maximum Number of Images

Post Images(画像)をフォームに含めた場合に、アップロード出来る画像の最大数です。

Minimum Image Size

画像の最低サイズです。

Maximum Image Size

画像の最高サイズです。

文字化けを直す


テストしたら一部文字化けしました。寄稿内容には大きな影響は寄稿者名以外は特に有りませんでしたが、一応修正する箇所を書いておきます。

僕の場合は文字コードがUTF-8だったから文字化けしたのですが、同じように文字化けした方は以下の手順で修正して下さい。

  1. 設定画面の「カテゴリ」部分
  2. 寄稿者フォームの「カテゴリ」部分
  3. 寄稿者の名前

の3箇所。以下修正部分です

  1. user-submitted-posts.phpを開いて312行目。
    update_post_meta($newPost, $this->_post_meta_Submitter, htmlentities(($authorName)));

    update_post_meta($newPost, $this->_post_meta_Submitter, htmlentities($authorName, ENT_QUOTES, "UTF-8"));

    に修正。

  2. views/settings.phpを開いて165行目。
    <?php echo htmlentities($category->name); ?>

    <?php echo htmlentities($category->name, ENT_QUOTES, "UTF-8"); ?>

    に修正。

  3. views/submission-form.phpを開いて51行目の
    <?php $category = get_category($categoryId); echo htmlentities($category->name); ?>

    の部分を

    <?php $category = get_category($categoryId); echo htmlentities($category->name, ENT_QUOTES, "UTF-8"); ?>

    に修正。

これで文字化けは解消されるはずです。修正後、保存する際も文字コードにお気をつけ下さい。

文字化けの原因

僕はノンプログラマーの普通のおじさんなので詳しいことはよくわかってませんが、上記コードでXSS対策として使用されているhtmlentities()は、基本的にISO-8859-1として処理してるようなので、第3引数を指定しないと文字化けしてしまうかも知れない、という事っぽいです。

という訳で、先程の3箇所は

echo htmlentities($category->name)

のような箇所を

echo htmlentities($category->name, ENT_QUOTES, “UTF-8″)

と修正しただけです。他は文字化けしてないハズですが、他にもあったらごめんなさい。

日本語化も簡単そうなので暇を見てやってみようかな。フォームもWYSIWYGと絡めればより使いやすくなるかも。本プラグインは以下よりダウンロード出来ます。

User Submitted Posts(via:Perishable Press)

URL :
TRB :

Comments & Trackbacks (19)

  1. 405

    初めまして405と申します。
    便利なプラグインだと思いさっそく使用させて頂いているのですが、
    画像込みで投稿時に以下の様なエラーが出て画像が表示されません。

    There was an error. Please ensure that you have added a title, some content, and that you have uploaded only images.

    ダッシュボードのライブラリへは画像は上がっているのですが、、、
    ご教授頂けないでしょうか??

    • シロ

      はじめまして。コメントありがとうございます。

      画像込みで投稿時に以下の様なエラーが出て画像が表示されません。

      このエラーは画像独自のエラーで、以下のうちどれかに引っかかっている可能性があります。

      1.405さんが設定した画像の数が制限を超えた、或いは届いていない。
      2.設定した画像のファイルサイズが制限を超えた、或いは届いていない。

      ですので、Number of ImagesとImage Sizeの設定を観直して頂ければ解決するかと思います。

  2. nago

    すいません、YOUR URL(投稿のURL)で投稿した値(URL)はどうやって取得(表示)できるのでしょうか?

    • シロ

      1年前の記事なので記憶があいまいですがカスタムフィールドに格納されていないでしょうか?

      • nago

        メールまでして申し訳ありません!
        なんだかんだで見つけました。
        user_submit_url
        でした。

        • シロ

          おお、何よりです!すみません、ちょっと忙しくてご対応出来そうに有りませんでした・・お力になれず申し訳ありません。

          • nago

            とんでもないです!
            かちびとさんのブログだけで
            とても助かっています。

          • シロ

            そう仰って頂けると救われます・・
            今後もがんばりますー!有難う御座いました!

  3. イプ~

    2013年にバージョンアップ版が出ました。
    文字化けはなんとか直せたのですが、写真を投稿しても
    記事にアップされません。

    また、お時間あるときに開設していただけたら嬉しいです!

    いつも見てるので、これからも頑張ってください!

    • シロ

      こんにちは。いつもご覧頂き有難う御座います!

      エラーや注意文等は出ていませんでしょうか?正常に動いていればアップロードに失敗していればその理由が表示されるはずですが、宜しければご確認下さいませ

      • イプ~

        ご返信、ありがとうございます。

        アップロードしてもエラーは出ません。
        記事には反映されず、メディアライブラリには登録されています。

        いろいろ調べた結果、記事に画像は即反映しないようなことを
        書いていました。

        次のバージョンアップでできるというようなことも書いていましたが
        英語での記述のためよくわかりませんでした(笑)

        • シロ

          メディアライブラリに登録されているという事はパーミッション等は問題なさそうですね。 即反映しない・・?すみません、本家サイトを確認しましたがそのような記述は見つけられませんでした・・宜しければソースをご提示頂ければと思います。

          既に施行されているかもしれませんが、ユーザーからアップロードされた画像はuser_submit_imageという名のカスタムフィールドが使われているみたいなので、カスタムフィールドから取り出してみては如何でしょうか。

          • イプ~

            早速のご返信ありがとうございます。
            あまりソースレベルでの知識がなく、基本的にはプラグインをインストールしてそのまま使ってます。

            御手数ですが、どの部分のソースをご提示すればよろしいでしょうか?

            お手すきの時で構いませんのでよろしくお願いいたします。

          • シロ

            あ、ごめんなさい。語弊がありました・・
            ソースコードではなく、「いろいろ調べた結果、記事に画像は即反映しないようなことを書いていました。」という情報(ソース)が掲載されているURLを教えて頂きたく・・

            そのページを見れば何か分かるかもしれませんのでお願いした次第でした。

            また、本プラグインはカスタムフィールドに情報を格納するように作られていましたので、前述どおり「user_submit_image」という名前のカスタムフィールドの値を取り出してみる、というのも合わせてお試しになってみてください。

  4. 通り過ぎ

    探していたプラグインが見つかりました!
    解説通りにヤッたら問題なくできました!
    しかし、このプラグインで「カテゴリー」を選択できるようにすると
    並び順がmy category orderでのソートorderby=order&title_li=が効かないようですが
    何か対処方法はありますでしょうか?

Twitter

Web制作に役立つそうなリソースを独断と好みで配信しています。

かちびと.netにリンクの無いトラックバックはお受けいていません。
コメントされる前にガイドラインをご覧下さい。

twitter facebook rss contact

Ads

Posts

Contact

Services