• linux command よく使うやつ (centos)

    書き換えてからコピーできる 特定の文字列含むファイ […]

    書き換えてからコピーできる

    特定の文字列含むファイルを検索するコマンド

    特定の文字列含むファイルを拡張子指定で検索するコマンド

    ディレクトリ(strage)を除外して特定の文字列(admin)含むファイルを拡張子指定で検索するコマンド

    サブディレクトリ以下の特定ファイルを一括して削除する

    ファイル名で指定ディレクトリ以下を検索

    日付で検索する (10日以内に編集)

    ディレクトリを除外して日付で検索する (3日以内に編集)

    ディレクトリを除外して時間で検索する (2時間以内に編集)

    更新日順に表示する

    更新日順にディレクトリを除外して表示する

    • find -type f はファイルのみを対象とする
    • find -print0 は検出されたファイルのフルパスをNULLキャラクターで分割して出力する
    • xargs -0 もしくは xargs --null 入力ストリームの分割はNULLキャラクターを用いる
     
    特定の日に更新したファイルを見つける
     find . -type f -name "*.php" -newermt "2020-09-25"
    

    一括変更 (今いるディレクトリの )

    パーミッション変更

    ファイル移動 、名前変更

    コピー A to B

    viエディタに行番号

    
    

    全てのphpが755に、htmlは644になる

    ローカルのファイルをリモートにアップロード
    # -a オプションでアスキー転送 (デフォルトはバイナリ転送)

    FTPserver : ftp.exzample.daa.jp
    FTP account : daa.jp-user

  • 公開Webサイトから画像を抽出,相対パスに従って保存,zipでダウンロード

    webページの画像を一括でダウンロードできます 画 […]

    webページの画像を一括でダウンロードできます

    画像はページの相対パスに従ってディレクトリが作成され,その中に保存されます

    画像一括ダウンロード

  • 読み込み時に実行されるscriptの実行順

    jQuery(function ($) { // […]

     
    
    
    
      jQuery(function ($) {
      // その他の処理
        $(window).on("load", function() {
        // 画像等全て読み終えた時の処理
          var h = $('.color-v img').height();
          console.log(h);
        });
      });
    
        $(function () {
          //DOM構築後実行 画像等は待たない
          $('header').append("$(fnction)");
        });
    
        $(document).ready(function () {
          //DOM構築後実行 画像等は待たない
          $('header').append("ready");
        });
    
        document.addEventListener('DOMContentLoaded', function () {
          //最初の HTML 文書の読み込みと解析が完了したとき
          $('header').append("addEventListener");
        });
    
        window.addEventListener('load', function() {
             $('header').append("window addEventListener");
        });
    
    
    // 特定の要素を読み込んでから実行
      const MAX_RETRY_COUNT = 10;  //待ち時間上限
      var retry_counter = 0;
      var set_interval_id = setInterval(findTargetElement, 1000);
       function findTargetElement() {
          retry_counter++;
          // 要素がMAXリトライ値になっても見つからない場合、インターバルを削除
          if(retry_counter > MAX_RETRY_COUNT ) {
              clearInterval(set_interval_id);
          }
                                                              // 読み込みを待つ要素名
          var diff_container_elements = document.getElementsByClassName('new_pl_9');
          if(diff_container_elements.length > 0) {
              clearInterval(set_interval_id);
              // ここにやりたい処理を書く
    
          }       
       }
    
     
    実行順

    addEventListener

    window addEventListener

    $(fnction)

    ready

    $(window).on

  • MYSQL直前の日曜日は何日か

    SELECT CURDATE() , DATE_F […]

    
    
     SELECT CURDATE() , 
     DATE_FORMAT(ADDDATE(NOW(), 0), "%w") AS today,
    CASE 0  -- 月曜にしたければ1
     WHEN DATE_FORMAT(ADDDATE(NOW(), 0), "%w")  THEN ADDDATE(CURDATE(), 0)
     WHEN DATE_FORMAT(ADDDATE(NOW(), -1), "%w") THEN ADDDATE(CURDATE(), -1)
     WHEN DATE_FORMAT(ADDDATE(NOW(), -2), "%w") THEN ADDDATE(CURDATE(), -2)
     WHEN DATE_FORMAT(ADDDATE(NOW(), -3), "%w") THEN ADDDATE(CURDATE(), -3)
     WHEN DATE_FORMAT(ADDDATE(NOW(), -4), "%w") THEN ADDDATE(CURDATE(), -4)
     WHEN DATE_FORMAT(ADDDATE(NOW(), -5), "%w") THEN ADDDATE(CURDATE(), -5)
     WHEN DATE_FORMAT(ADDDATE(NOW(), -6), "%w") THEN ADDDATE(CURDATE(), -6)
    END AS start_week -- 直前の日曜日
    
    
  • wordpress 管理画面が重たい

    $ top ←メモリ使用量 mysql php-f […]

    $ top   ←メモリ使用量
     mysql
     php-fpm ← 複数ある
    
    mysql> show variables like 'table_definition_cache';
    +------------------------+-------+
    | Variable_name          | Value |
    +------------------------+-------+
    | table_definition_cache | 1400  |
    +------------------------+-------+
    
    mysql> show variables like 'performance_schema';
    +--------------------+-------+
    | Variable_name      | Value |
    +--------------------+-------+
    | performance_schema | ON    |
    +--------------------+-------+
    
    # vi /etc/my.cnf
    
    [mysql.d]
    # 以下を追記
    table_definition_cache = 400
    performance_schema = 0
    
    #vi /etc/php-fpm.d/www.cnf
    
    pm = static
    pm.max_children = 2
    pm.max_requests = 500
    
    # service php-fpm restart

     

    https://autovice.jp/articles/104

  • モーダルを閉じさせない、コードを書いて開く、コードで閉じる(Bootstrap)

    $(‘#nameModalCenter’).on( […]

    
    
      $('#nameModalCenter').on('hide.bs.modal', function (e) {
         // 閉じられる前のイベント、XでCloseとBackDropもこれでキャッチできる
    
      $('#name_modal_close').click( function() {
        // これは閉じない
        return false;
    
      jQuery(document).on('click', '#name_modal_close', function() {
        // これは閉じる(というか、閉じてからここに来る)
        return false;
    
    
    

    jQueryでモーダルを開く,閉じる

    
    
     $('#nameModalCenter').modal();//modalを出す
    
     $('#nameModalCenter').modal('hide'); //閉じる
    
    
    
  • ファイルを配列に読み込む

    filename = ‘ファイルのフルパス’ # […]

    
    filename = 'ファイルのフルパス'
    
    # ファイルを配列に読み込む
    with open(filename, "r", encoding="utf-8") as f:
        lastline = f.readlines()
    
       #こうすると配列の最後の要素のみ取り出せる
        lastline = f.readlines()[-1]
    
    
    
    
    
    
    
    
  • dropboxへファイルアップロード

    【Dropbox】開発用アプリの作成とアクセストー […]

    【Dropbox】開発用アプリの作成とアクセストークンの取得

    
    import dropbox
    import os
    
    
    dropbox_access_token="ながいアクセストークン"
    # アップロード先のパス,すでにファイルが有ると失敗する
    dropbox_path="/csv/tmp.csv"
    computer_path= r"/var/www/py_873/csv/tmp.csv"
    
    client = dropbox.Dropbox(dropbox_access_token)
    
    client.files_upload(open(computer_path, "rb").read(), dropbox_path)
    print("アップロード完了:{}".format(computer_path))
    
    
  • selenium ワンタイムパスワード,崩し文字とかでもログインする

    chrome プロファイル指定して起動–ログインセ […]

    chrome プロファイル指定して起動–ログインセッション保持
    たいていは一度きりなのでクッキーに保存すれば次回からログインしなくていい

    
    driver.get(url)
    
    
    mail = driver.find_element(By.ID, "login_handle") # 次に進むボタン
    mail.clear()
    mail.send_keys("じぶんのあかうんと")  #入力
    
    element = driver.find_element(By.CSS_SELECTOR, '.ar-button_medium_1i9SB [type="ar-button_medium_1i9SB"]') #複数ある
    element.click()
    
    # passwordという名前の要素が見つかるまで1秒間待機
    password = WebDriverWait(driver, 1).until(EC.presence_of_element_located((By.NAME, "password")))
    password.clear()
    
    chkbox = driver.find_element_by_name('rememberMe') 
    # チェックボックスが非選択の状態を確認
    if not chkbox.is_selected():
        # 非選択の場合はJavaScriptでクリックする
        driver.execute_script("arguments[0].click();", chkbox)
    
    password.send_keys("じぶんのぱすわーどとか")   #パスワード入力
    element = driver.find_element(By.ID, "signInSubmit") # ログインボタン
    element.click()         # button click
    
    #''' ワンタイムパスワードが必要な場合
    # otpCodeという名前の要素が見つかるまで1秒間待機
    otpCode = WebDriverWait(driver, 1).until(EC.presence_of_element_located((By.NAME, "otpCode")))
    otpCode.clear()
    
    saveScreen()  # 画面キャプチャの関数呼び出し
    
    #ワンタイムパスワード入力
    time.sleep(25) # 25s待ってるあいだにワンタイムパスワードを自分で'onetime.txt'にコピペ
    # ファイルを読み込んで一行取得
    with open('./env/onetime.txt') as f:
        for line in f:
          otpCode.send_keys(line)   #ワンタイムパスワード入力
    
    chkbox = driver.find_element_by_name('rememberDevice') 
    # チェックボックスが非選択の状態を確認
    if not chkbox.is_selected():
        # 非選択の場合はJavaScriptでクリックする
        driver.execute_script("arguments[0].click();", chkbox)
    
    element = driver.find_element(By.ID, "auth-signin-button") # ログインボタン
    element.click() 
    
    

    スクリーンショット関数化,画像ファイルが複数

  • ファイルを読み込んで一行取得, 別のファイルに追記

    # ファイルを読み込んで一行取得 with ope […]

    
    
    # ファイルを読み込んで一行取得
    with open('./csv/url.txt') as f:
        for url in f:
    
            driver.get(url)
    
            element = driver.find_element(By.ID, "productTitle")
            productTitle = element.text
    
            element = driver.find_element(By.CSS_SELECTOR, ".a-price-whole") #複数ある
            price = element.text
            price = price.replace(",", "")  #カンマ除去
    
            with open('csv/tmp.csv', 'a') as f:
                writer = csv.writer(f)
                writer.writerow([productTitle, price])
                print(productTitle)
    
    
    
  • chrome プロファイル指定して起動–ログインセッション保持

    import os from selenium i […]

    
    import os
    from selenium import webdriver
    from selenium.webdriver import ChromeOption
    
    # chrome プロファイル指定 
    userdata_dir = 'UserData'  # カレントディレクトリの直下に作る場合
    os.makedirs(userdata_dir, exist_ok=True)
    options = webdriver.ChromeOptions()
    options.add_argument('--user-data-dir=' + userdata_dir)
    
    options.add_argument("--headless")
    options.add_argument("--no-sandbox")
    options.add_argument('--blink-settings=imagesEnabled=false')  #画像を読み込まない
    
    #WEBブラウザの起動
    driver = webdriver.Chrome(options=options)
    
    
  • seleniumでページャーをクリックしながらループ

    while 1: #対象要素 →Pager Nex […]

    
    while 1:
        #対象要素 →Pager Next アクティブページ .Pager__link Pager__link--active
        element = driver.find_element(By.CSS_SELECTOR,".Pager__link--active")
        # 親要素   
        element = element.find_element_by_xpath('..')
        # その次のli要素
        element = element.find_element_by_xpath('following-sibling::li')
        # 子要素のaタグがあるか
        if len(element.find_elements_by_class_name("Pager__link--disable")) > 0 :
            break
        else:
            element = element.find_element(By.CSS_SELECTOR,".Pager__link")
            # の次の要素の子要素のaをクリック
            element.click()
            getInsert()  #関数実行
    
    
  • seleniumでMySQLにInsert

    import mysql.connector co […]

    
    import mysql.connector
    
    conn = mysql.connector.connect(
        host="localhost",
        user="user_name",
        password="password",
        database="amazon"
    )
    
    # カーソルを取得
    cursor = conn.cursor()
    
    
    #要素を取得しながらDB insert 
    def getInsert():
       # otpCodeという名前の要素が見つかるまで1秒間待機
        WebDriverWait(driver, 2).until(EC.presence_of_element_located((By.CSS_SELECTOR, ".Product")))
        elements = driver.find_elements_by_class_name('Product')
        for element in elements:
        # 要素内のテキストを取得
            # element_text = element.text
            Product__title = element.find_element_by_class_name("Product__title").text
            Product__priceValue = element.find_element_by_class_name("Product__priceValue").text
            Product__priceValue = Product__priceValue.replace(",", "")  #カンマ除去
            Product__priceValue = Product__priceValue.replace("円", "") 
    
            # データ挿入のクエリ
            insert_data_query = """
            INSERT INTO product (productTitle, price) VALUES (%s, %s)
            """
            # データ挿入
            price_data = (Product__title, Product__priceValue)
            cursor.execute(insert_data_query, price_data)
            # 変更を確定
            conn.commit()
            print(Product__title)
    
    
    ## 要素を取得する処理 とか
    
     getInsert()  #関数実行
    
    
    
  • selenium,要素を取得

    # タグ名が「a」要素の中で最初に見つけた要素を取 […]

    
    # タグ名が「a」要素の中で最初に見つけた要素を取得
    element = driver.find_element(By.TAG_NAME, "a")
    
    # 検索テキストボックスの要素をname属性値(name="q")から取得
    element = driver.find_element(By.NAME, "q")
    
    element = driver.find_element(By.CSS_SELECTOR, ".Product") #ループできない
    element.click()  #クリックはできる
    
    # aタグ内の文字列がが"Gmail"の要素を取得
    element = driver.find_element(By.LINK_TEXT, "Gmail")
    
    elements = driver.find_elements_by_class_name('Product')  #ループできる
    # listになると直にfind_elementsできない、回して一要素を取り出すか、find_elementで取得する
    
    for element in elements:
        elem_p1 = element.find_element_by_class_name("rax-view-v2")   #直下の子要素
        elem_p2 = elem_p1.find_elements_by_class_name("rax-view-v2")  # 2つある
        elem_p3 = elem_p2[1].find_elements_by_tag_name("div")        #2番目の子要素たち
    
    一番最初に見つかった要素 element.find_element_by_class_name
    リストで取得           element.find_elements_by_class_name
    

    取得とか待機処理など

  • スクリーンショット関数化,画像ファイルが複数,文字列内に変数展開

    def saveScreen(last_top): […]

    
     def saveScreen(last_top):
        # f'文字列{変数}文字列'
        FILENAME = os.path.join(os.path.dirname(os.path.abspath(__file__)), f'image/screen{last_top}.png')
        # SeleniumからJavaScriptを実行 画像のサイズ取得
        w = driver.execute_script("return document.body.scrollWidth;")
        # h = 1200 
        h = driver.execute_script("return document.body.scrollHeight;")
        driver.set_window_size(w,h) # set window size
        driver.save_screenshot(FILENAME) 
    
    #呼び出し
     saveScreen(last_top)
    
  • Python3 ログを取る

    import logging logging.ba […]

    
     import logging
    
     logging.basicConfig(filename='log/example.log', encoding='utf-8', level=logging.DEBUG)
    
    

    【Python3】loggerを使ってログをファイルに出力したりちゃんと扱ったりする|yucco

  • 都道府県 / 州 / 郡 woocommerce

    翻訳ファイルの修正 WooCommerceの日本語 […]

    翻訳ファイルの修正

    WooCommerceの日本語ファイル
    /wp-content/languages/plugins/woocommerce-ja.mo

    woocommerce-ja.po が編集用のファイルなので、このファイルをダウンロード

    翻訳ファイルの編集ソフト「Poedit」 をインストール
    書き換え後に ファイル MOにコンパイル → woocommerce-ja.mo をアップして上書き

  • javascript オブジェクト 追加、結合

    let obj4= {age: 10, weigh […]

    
    let obj4= {age: 10, weight: 20};
     
    obj4 = {...obj4, ...{name:'ichiro', height:199} }
    obj4['tel'] = 9494;
    
    console.log(obj4);
    
    
    {age: 10, weight: 20, name: 'ichiro', height: 199, tel: 9494}
    
  • [Vue.js, JavaScript]クリックされた要素本体を取得

    $eventというがネイティブな変数 <a […]

    $eventというがネイティブな変数

    
      <a @click.prevent="show_after(post.id,$event)" >
    
      show_after(post_id, event){
          console.log(event.target);
          $(event.target).prev().find('span.hidden').removeClass('hidden');
      }
    
  • laravel8 クエリービルダー サブクエリ 複数条件 算術演算 groupBy複数 orderBy DESC混在 生のSQL chank

    サブクエリ 変数はたいていグローバル化しないと渡せ […]

    
        サブクエリ
        変数はたいていグローバル化しないと渡せない
    
        $ranks_tags = DB::table('ranks_tags')->where('label',$this->range_w);
    
            DB::table('post_tags as p')->select(
                DB::raw(   //この中の''は1セット。最初と最後のみで全体を囲む
                'p.fave_id , p.tag_id, f.name , f.cnt_cheer , s.before_cnt_cheer
                , f.cnt_cheer - s.before_cnt_cheer AS incre_cheer 
                , f.cnt_post, s.before_cnt_post
                , f.cnt_post - s.before_cnt_post AS incre_post
                , cnt_share
                , s.id as ranktag_id'
                )
            )
            ->LeftJoin( 'tags as t' , 'p.tag_id' ,'t.id')
            ->LeftJoin( 'faves as f', 'p.fave_id','f.id')
            ->LeftJoinSub($ranks_tags, 's', function ($join) {
                $join->on('s.tag_id' , 'p.tag_id' );
                $join->on('p.fave_id' , 's.fave_id');
            })
            ->groupBy('p.tag_id' , 'p.fave_id' , 'incre_cheer' , 'ranktag_id' )
            ->orderBy('p.tag_id' ,'asc')
            ->orderBy('incre_cheer' ,'DESC')
            ->orderBy('cnt_post' ,'DESC')
            ->limit(999999)
            // ->toSql(); ←素のSQL文を書き出せる
            ->chunk( $this->max_lows, function ($tag_fave) {
                foreach ($tag_fave as $key => $row) {
                    // DB::table('tags')
                    //     ->where('id', $tags->id)
                    //     ->update(['created_at' => $this->ranges['day']]);
                    var_dump($key, $row );
    							
    			}
                return false; //← これで終わる
    		});
    
  • wsl2 Apache バーチャルホスト設定

    Windowsのhosts ファイルに追加 172 […]

    Windowsのhosts ファイルに追加

     
      172.25.29.190       sample.org
    
    

    ※↑ipアドレスはUbuntu起動時のもの、127。0。0.1 ではないことに注意

    
    
    <VirtualHost *:80>
        ServerAdmin webmaster@sample.org
        ServerName sample.org
        ServerAlias sample.org
        DocumentRoot /var/www/web/public
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
       <Directory /var/www/web/public>
            AllowOverride All
            Options All
            Require all granted
        </Directory>
    </VirtualHost>
    
    
    
  • ページを遷移する前に unloadイベント

    window.addEventListener(‘ […]

    
       window.addEventListener('beforeunload', (event) => {
            event.preventDefault();
            // このページを去る前にローカルストレージを削除;
            localStorage.removeItem('interValId');
        });
    
    
  • lalavel8 サブクエリー (クエリビルダー)

    $sql = “SELECT ←普通のSQL文 F […]

    
     $sql = "SELECT ←普通のSQL文
     FROM
     WHERE " ; 
     
    
     DB::table('app_user_user AS uu')
            ->select( ~ ~ 
    
        ) ->leftJoin( DB::raw("( $sql  ) AS sc ") , 'uu.id', '=', 'sc.user_id')
    
    
    
    	$juhuku = DB::table('issuers')
    		->orWhere(function($query) {
    			$query->where('tel', $this->tel[$this->j])
    			->where('user_id', '!=', $this->user_id);
    		})
    		->orWhere(function($query) {
    		$query->where('email', $this->email[$this->j])
    		->where('user_id', '!=', $this->user_id);
    	})->exists() ;
    
    



    select exists( select * from `issuers` where ( `tel` = '230-0234-5432' and `user_id` != 4604 ) or ( `email` = 'izumo@reqw.wer' and `user_id` != 4604) ) as `exists`

  • localStorage 配列の保存方法

    そのまま保存するとデータ構造が書き換えられて配列が […]

    そのまま保存するとデータ構造が書き換えられて配列がcsv形式になってしまう。

    
    localStorage.setItem('stockoutData', JSON.stringify(stockoutData)); //保存
    
    let stockoutData = localStorage.getItem('stockoutData'); //取得
         let stockouts = JSON.parse(stockoutData);  //変換
    
    
  • wordpress マルチサイト サブディレクトリ 表示されない

    投稿記事に過去1ヶ月よりも前の日付があると出てこな […]

    投稿記事に過去1ヶ月よりも前の日付があると出てこないので、SQL文で一括で昨日とかにする

    
    update `wp_posts` set post_date='2022-01-01 12:12:12'
    ,post_date_gmt = '2022-01-01 03:12:12'
    
    
  • Notice: ob_end_flush(): failed to send buffer of zlib output compression

    対処方法 # vi /etc/php.ini __ […]

    対処方法

    
     # vi /etc/php.ini
    _________________________
    
     zlib.output_compression = Off ← こうする
    _________________________
     # systemctl restart httpd
    
    

    透過的なページ圧縮を行うかどうかを指定します。

    Onを指定した場合、ブラウザが”Accept-Encoding: gzip”または”deflate”ヘッダを送信する際に、ページが圧縮されます。

  • WSL2でUbuntuの初回起動時に0x800701bcが出る

    Linux カーネル更新パッケージのダウンロード […]


    Linux カーネル更新パッケージのダウンロード

    手順 4 – Linux カーネル更新プログラム パッケージをダウンロードする

    最新のパッケージをダウンロードします。

    x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージ
    をいれてたぶん解決。

  • has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.

    「CORSポリシーによってブロックされています:要 […]

    「CORSポリシーによってブロックされています:要求されたリソースに「Access-Control-Allow-Origin」ヘッダーがありません。」
    ヘッダーがないのはフロント側ではなく、サーバー側のこと

    サーバー側のファイルの先頭にこれを書くだけでいい

    
    
    <php
      header('Access-Control-Allow-Origin: *');
    
    
  • URLパラメータ、クエリストリングの書き換え

    //URL書き換え var anker = 1; […]

    
    //URL書き換え
        var anker = 1;
        var issuer_no = 1;
        history.replaceState('','','?issuer_no='+issuer_no + '&bank_no=' + bank_no + anker);
    
    
  • Trying to get property ‘default_payment_method’ of non-object

    users → stripe_idがnullでなけ […]

    users → stripe_idがnullでなければ登録に失敗する

  • javascript 日付文字列の日付フォーマットを変更する

    2021-07-26 → 2021年7月26日 v […]

    2021-07-26 → 2021年7月26日

    
    
    var datestr = "2021-07-26";
    var date = Date.parse(datestr);
    var date = new Date(date);
    
      format = date.getFullYear() + '年';
      format +=( date.getMonth() + 1 ) + '月';
      format += date.getDate() +'日';
      
      console.log(format);
    
  • laravel非ログインならユーザー登録を出さない

    管理画面用ならばデフォルトの逆なので、ログインユー […]

    管理画面用ならばデフォルトの逆なので、ログインユーザーのみが新規登録出来るようにする

    [./app/Http/Middleware/RedirectIfAuthenticated.php]

    
    
    foreach ($guards as $guard) {
        
        if($_SERVER['REQUEST_URI'] == '/register' ) {
            // 会員作成なら
            if (Auth::guard($guard)->check()) { 
                return $next($request);
            }else{
                //ログインしてなければリダイレクト
                return redirect(RouteServiceProvider::HOME);
            }
        }else{
            
            if (Auth::guard($guard)->check()) { 
                //ログイン中ならtrue
                return redirect(RouteServiceProvider::HOME);
            }
        }
    }
    
  • WP_Query から投稿記事やらアイキャッチやらタグを取得

    $the_query = new WP_Query […]

    
    $the_query = new WP_Query($args);
      foreach($the_query->posts as $key=>$value){
        var_dump($value->ID, $value->post_date, $value->post_content);
    
       $thumb_id = get_post_thumbnail_id($postID);      // 指定した投稿のアイキャッチ画像の画像IDを取得
    	$thumb_img = wp_get_attachment_image_src($thumb_id );
    	$src = $thumb_img[0]; 
    
    
    	$postID = get_the_ID();
    			$fivesdrafts = $wpdb->get_results( 
    				"SELECT name , slug
    				FROM $wpdb->term_relationships
    				LEFT JOIN $wpdb->term_taxonomy  USING (term_taxonomy_id)
    				LEFT JOIN $wpdb->terms USING(term_id)
    				WHERE object_id = $postID
    				AND taxonomy = 'post_tag'"
    			);
    			 foreach ($fivesdrafts as $key => $val) {
    				 $tag .= $val->slug . $val->name ; // スラッグ。タグ
    			 }