質問編集履歴

1 プラグイン(smeta)のコードを追加しました

unotalk

unotalk score 118

2018/05/03 02:48  投稿

ユーザーによるフロントエンドでの投稿
ユーザーによるフロントエンドでの投稿できるシステムを作ろうとしています。
タイトルや投稿内容はwp_insert_postで投稿することができたのですが、別のプラグインで作成したカスタムフィールドの部分はどのようにすれば追加できますでしょうか。
プラグインによるところが多いと思うのですが、どこを見ればいいかなどだけでもアドバイスいただけると助かります。
以下に使用しているコードを記載します。
1
・ファイル名:create-review.php
・ファイル内容:ユーザーがタイトル($siteTitle)とページのスラッグ名($slugDomain)を投稿するファイルです。
・したいこと:
こちらから別ファイル(function.php)記載のName Of CriteriaとCriteria Scoreも投稿できるようにしたいと思っています。ただし今回はName Of Criteriaは「評価」、Criteria Scoreは「1」という固定値で考えています。
```php
function _my_create_review(){
   global $create_review_error;
   if(is_page('create-review') && is_user_logged_in() && isset($_POST['_wpnonce']) && wp_verify_nonce($_POST['_wpnonce'], 'create_review')){
   $domain = trim(filter_input(INPUT_POST,"domain",FILTER_VALIDATE_URL));
   $slugDomain = str_replace("https://www", "", $domain);
   $siteTitle = trim(filter_input(INPUT_POST,"siteTitle",FILTER_SANITIZE_STRING));
       if (empty($_POST["domain"]) || empty($_POST["siteTitle"])) {
           $create_review_error[] = "未記入の項目があります。";
         } elseif (!filter_var($domain, FILTER_VALIDATE_URL)) {
           $create_review_error[] = "ご記入頂いたサイトURLは有効なURLではありません。http://(https://)の抜けなどありませんでしょうか。<br />繰り返し発生する場合はお手数ですが、"."<a href='https://re-log.com/contact-page/'>お問い合わせフォーム</a>よりお知らせください。";
           }
   //Add post if no error
   if(empty($create_review_error)){
       $id = wp_insert_post(array(
           'post_title' => (string)$_POST['siteTitle'],
           'post_name' => $slugDomain,
           'post_status' => 'publish',
           'post_author' => get_current_user_id(),
           'post_type' => 'review',
           'post_excerpt' => '<a href="'.$domain.'"></a>',
           ), true);
       //データの挿入に成功していたら移動
       if(!is_wp_error($id)){
           //カスタムフィールド追加
           update_post_meta($id, 'url_ref', $_POST['url']);
           //ページを移動
           header('Location: '.get_permalink($id));
           die();
       }else{
          $create_review_error[] = 'エラーが発生しました。'.$id->get_error_message();
       }
   }
   }
}
add_action('template_redirect', '_my_create_review');
```
2
・ファイル名:function.php
・ファイル内容:カスタム部分の変数などの設定です
```php
/* add custom meta fields using smeta to post types. */
if( !function_exists('reviews_custom_meta') ){
function reviews_custom_meta(){
$reviews_meta = array(
   array(
           'id' => 'reviews_display_count_reviews',
           'name' => esc_html__( 'Scores', 'reviews' ),
           'type' => 'group',
           'fields' => array(
               array(
                   'id' => 'review_criteria',
                   'name' => esc_html__( 'Name Of Criteria', 'reviews' ),                   
                   'type' => 'text',
                   'default' => '評価'
               ),
               array(
                   'id' => 'review_score',
                   'type' => 'select',
                   'name' => esc_html__( 'Criteria Score', 'reviews' ),                   
                   'options' => array(
                       '1' => '1',
                       '2' => '2',
                       '3' => '3',
                       '4' => '4',
                       '5' => '5'
                   ),
               )               
           ),
       ),
   );
```
プラグインのファイルも確認したのですが、関連していそうなところが見つからず、記載していません。
もしこういうことが書かれているファイルがあるはずなどありましたら教えていただけると幸いです。
細かい内容で恐縮ですが、アドバイスいただけると本当に助かります。
よろしくお願いします。
よろしくお願いします。
追記
使用しているプラグイン(smeta)ですが、一般に公開されているものではなく、文字数オーバーのため貼り付けることもできないので、一時的に以下にアップロードしています。
https://drive.google.com/drive/folders/1m1DdOa7uG9MY_TMki5673nLCzCsoHZ6W?usp=sharing
  • PHP

    28070 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    10714 questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る