Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What is going on with this article?
@hirqo

contact form 7 でクッキー情報を送信する

More than 1 year has passed since last update.

contact form 7 でクッキー情報を送信する方法を試行錯誤しながら書いたので備忘録的な感じで書いていきます。

なぜやろうと思ったか

元々の機能としては投稿をブックマークしてそのブックマークをしたものをformで送信するというものを作成するつもりでした。

しかし、ブックマークするプラグインは溢れているのにも関わらず、それをformで送信する機能のついたプラグインは確認できませんでした。

それならいっそ作ってしまおうと、そういうことです。

functions.php
<?php 
add_action( 'get_header', 'fovorites_form');

function fovorites_form() {
if(!is_NULL($_COOKIE["simplefavorites"])){
  preg_match('/(?<=^.{27}).+/', $_COOKIE["simplefavorites"], $aaa);
  $i = 0;
  $j = 0;
  $splited = str_split($aaa[0]);
  $str[0] = '';
  while($splited[$j] != ']'){
    if($splited[$j] == ','){
      $i++;
      $str[$i] = '';
    }
    else{
      $str[$i] .= $splited[$j];
    }
    $j++;
  }
  global $wpdb;
  // $length = strlen($str);
  $sql = '';
  foreach ($str as $value) {
      $sql .= $value;
      $sql .= ',';
  }
  $sql = substr($sql, 0, -1);
  $result = $wpdb->get_results("SELECT post_title, guid FROM wp_posts WHERE ID IN ($sql)", ARRAY_A );
  $i = 0;
  foreach ($result as $value) {
    $json[$i]['post_title'] = $value['post_title'];
    $json[$i]['post_guid'] = $value['guid'];
    $i++;
  }
  wp_enqueue_script('some_handle', '../js/main.js', array( 'jquery' ), false, true);
  wp_localize_script('some_handle', 'object_name', $json);
}
}

function getCatItems($atts, $content = null) {
          extract(shortcode_atts(array(
            "num" => '6'
          ), $atts));

          // 処理中のpost変数をoldpost変数に退避
          global $post;
          $oldpost = $post;

          // カテゴリーの記事データ取得
          $myposts = get_posts('numberposts='.$num.'&order=DESC&orderby=post_date&category='.$cat);

          if($myposts) {
                        // 記事がある場合↓
                        $retHtml = '<div class="blog-section" id="posts_show"><div class="grid wow fadeInUp" data-wow-duration="1s" data-wow-delay="0.1s" style="visibility: visible; animation-duration: 1s; animation-delay: 0.1s; animation-name: fadeInUp;">';
                        // 取得した記事の個数分繰り返す
                        foreach($myposts as $post) :
                                      // 投稿ごとの区切りのdiv
                                      $retHtml .= '<div class="post"><div class="holder">';
                                      // 記事オブジェクトの整形
                                      setup_postdata($post);
                                      // サムネイルの有無チェック
                                      if ( has_post_thumbnail() ) {
                                                    // サムネイルがある場合↓
                                                    $retHtml .= '<div class="img-holder">' . get_the_post_thumbnail($page->ID, 'thumbnail') . '</div>';
                                      } else {
                                                    // サムネイルがない場合↓※何も表示しない
                                                    $retHtml .= '<div class="img-holder"></div>';
                                      }

                                      // 文章のみのエリアをdivで囲う
                                      $retHtml .= '<div class="text-holder">';

                                      // 投稿年月日を取得
                                      $year = get_the_time('Y'); // 年
                                      $month = get_the_time('n');           // 月
                                      $day = get_the_time('j');   // 日

                                      $retHtml .= '<header class="entry-header"><span class="posted-on"><time>' . $year . '年' . $month . '月' . $day . '</time></span></header>';

                                      // タイトル設定(リンクも設定する)
                                      $retHtml.= '<h3 class="entry-title">';
                                      $retHtml.= '<a href="' . get_permalink() . '">' . the_title("","",false) . '</a>';
                                      $retHtml.= '</h3>';

                                      // 本文を抜粋して取得
                                      $getString = get_the_excerpt();
                                      $retHtml.= '<div class="entry-content">' . $getString . '</div>';

                                      $retHtml.= '</div></div></div>';

                        endforeach;

                        $retHtml.= '</div></div></div>';
          } else {
                        // 記事がない場合↓
                        $retHtml='<p>記事がありません。</p>';
          }

          // oldpost変数をpost変数に戻す
          $post = $oldpost;

          return $retHtml;
}
// 呼び出しの指定
add_shortcode("getCategoryArticle", "getCatItems");

function wcs_search_form_shortcode() {
echo "<span class='fixpage'>";
get_search_form();
echo "</span>";
}
add_shortcode( 'search', 'wcs_search_form_shortcode' );
 ?>

全体像はこんな感じです。
jsファイルは

main.js
jQuery(function(){
  if(jQuery('#documents').length != 0){
    if(object_name != NULL){
      var checkbox = jQuery('#documents input').html();
      var input;
    for (var i = 0; i < object_name.length; i++) {
        input = '<input type="checkbox" name="' + 'checkbox-455[]' + '" value="' + object_name[i]['post_title'] + '" checked="checked"><a href="' + object_name[i]['post_guid'] + '">' + object_name[i]['post_title'] + '</a><br>';
        jQuery('#documents').append(input);
       }
    }
    else
    {
        jQuery('#documents').append('<p>請求する資料がありません</p><p><a href="...">習い事を探す</a></p>');
    }
  }
});

  jQuery(function(){
    if(jQuery('.for-document-form').length != 0){
      if(object_name == NULL){
            jQuery('.for-document-form a').text('資料をさがす');
            jQuery('.for-document-form a').attr('href', '...');
      }
    }
  });
0
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
hirqo
学生です♡

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
0
Help us understand the problem. What is going on with this article?