カテゴリー: TECH NOTES

  • kusanagiにインストーしたwordpressでウィジェットが更新できない

    kusanagiにインストーしたwordpressでウィジェットが更新できない場合、一度プラグインをすべてオフにして、一つづつ有効にして検証する。

    有効にした後はウィジェットページを一度読み込みなおしてから検証。

  • kusanagiにインストールしたWordPressの日付が英語になってしまう

    kusanagiにインストールしたWordpressの日付が英語になってしまう現象が起こったが以下で解決。

    ※具体的には年月のアーカイブが英語表記。

    kusanagiの設定から、翻訳アクセラレーターの有効のチェックボックスを外す。

  • conohaにxドメインのドメインを設定する時にはDNSレコードの設定に注意

    特にXドメインのドメインに限ったことではないが・・・

    DNSレコードをドメイン管理側と、conoha側の両方で設定する必要があるので注意。

    conoha管理画面内、DNSのドメインリストから、対象ドメインを選択し、追加からIPアドレスを追加しないと、Xドメイン側だけで設定しても反映されないので注意。

  • PHPリモートサーバー上でZIPを解凍したり、フォルダを削除したりする

    PHPでリモートサーバ上でフォルダ削除する

    こちらのサイトでコードが紹介されている
    https://pct.unifas.net/programming/php/390/

    レンタルサーバー上でzipファイルを解凍する

    こちらのサイトでコードが紹介されている
    http://blog.donity.com/k1/2010/07/16/%E3%83%AC%E3%83%B3%E3%82%BF%E3%83%AB%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E4%B8%8A%E3%81%A7zip%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E8%A7%A3%E5%87%8D%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF/

    $zip_file = ‘hoge.zip’; // 展開するzipファイルを指定

    $zip = new ZipArchive;
    if($zip->open(“$zip_file”) === TRUE) {
    $zip->extractTo(‘./’);
    $zip->close();
    echo ‘成功’;
    } else {
    echo ‘失敗’;
    }

     

  • wordpressで検索文字数、検索文字を制限する方法

    膨大な量のデータがある場合、検索でサーバーに負荷をかけないために、検索文字数や検索文字を制限したいということがある。

    検索文字数で条件分岐し制限する

    WordPressのフォームで検索文字数が少なかったり、多かったりするときにエラーメッセージを表示させる場合、以下のコードで条件分岐できる。

    <?php $s = $_GET['s'];?>
    <?php if (mb_strlen($s, 'UTF-8')<2) ://文字数が1文字?>

    上記の条件分岐を使えば一文字での検索を禁止することができる。

    検索文字で条件分岐し制限する

    <?php $s = $_GET['s'];?>
    <?php if (strcmp($s, '検索文字') == 0)) :?>

    上記の条件分岐を使えば、任意の文字列と比較し、一致すれば・・・・という処理を行うことができる。

     

  • WordPressで検索結果でパラメーターの値を保持させる方法

    WordPressの検索フォームをカスタマイズし、検索結果のページにもフォームを表示させている場合。

    検索クエリや絞り込み条件を保持させるておくと親切だ。

     

    検索結果でフォームの検索クエリを保持する方法

    inputに以下を追加

    value="<?php if(get_search_query()) echo get_search_query() ?>"

    検索結果でパラメータから値を取りだし保持する方法

    <?php function getParamVal($param) {
    $val
    = (isset($_GET[$param]) && $_GET[$param] != '') ? $_GET[$param] : '';
    $val
    = htmlspecialchars($val, ENT_QUOTES);

    return $val;
    } ?>

    inputに以下を追加

    value="<?php echo getParamVal('取得したいパラメータの値'); ?>"

    wp_dropdown_categoriesを使用し、パラメーターの値からカテゴリを保持

    <?php
    $selected_id = getParamVal('cat');
    $args = array(
    'show_option_all' => 'カテゴリー選択',
    'selected' => $selected_id,
    ); ?>
    <?php wp_dropdown_categories( $args ); ?> 

     

    タームの絞り込みでチェックボックスのcheckedの値を保持

    これが曲者だが、一つの方法はurlのパラメータで条件分岐する方法。

    urlにタームスラッグが含まれていれば、checkedでラベルを出力する。タームの種類が限られているならばこれで解決。

    <?php
    $url = $_SERVER['REQUEST_URI'];
    if(strstr($url,'タームスラッグ')==true):
    ?>
    <label><input type="checkbox" name="タクソノミー名[]" checked="checked" value="タームスラッグ">ターム名</label>
    <?php else: ?>
    <label><input type="checkbox" name="タクソノミー名[]" value="タームスラッグ">ターム名</label>
    <?php endif; ?>

  • WordPress タームをデータベースからphpadminで直接削除する方法

    SQLのタブに以下をペーストして実行。

    UPDATE wp_term_relationships SET term_taxonomy_id=REPLACE(term_taxonomy_id,"置き換えるカテゴリーID","置き換えた後のカテゴリーID")

    単純に置換しているだけなので、例えば置き換えるカテゴリーIDを”6”とすると、16や66といった、数字の6がすべて置き置き換わるので注意。

  • スプレッドシートで結合を解除、エクセルのように一括で

    Excelの場合、セルの表示形式で結合を解除すると、選択範囲内に結合セルと非結合セルが混在していても、一括でセルの結合を解除することができる。

    同じことをGoogleスプレッドシートでできないかと調べてみたが、同じ機能はないようだ。

    スプレッドシートで結合を一括解除

    代替案として、厳密には一括ではないが・・・

    結合セルと非結合セルが混在している列の横に、参照セルを作成すれば、結果的に結合が解除された状態で値を並べることができる。

    スプレッドシートで結合を一括解除

     

  • WordPressで固定ページにタグをつけ、同じタグのついたページを関連ページとして紐づけし表示させる

    WordPressで固定ページにタグ付けし、任意のページにそのページと同じタグの付いたページを関連ページとして表示させる方法を紹介する。

    例えば、赤ワインというページに「ワイン」とタグ付けし、同じタグの付いたページを、赤ワインページに表示させたいという場合だ。これを固定ページで実現するためにはまず、固定ページでもタグ機能を使えるできるようにする必要がある。

    固定ページでタグを使えるようにする

    以下のコードをfunction.phpに追記

    function add_tag_to_page() {
    register_taxonomy_for_object_type('post_tag', 'page'); }
    add_action('init', 'add_tag_to_page');

    続いて、要となる同じタグでループを回すコード。

    同じタグのついた固定ページを関連ページとして表示するコード

    <?php
      $original_post = $post;
      $tags = wp_get_post_tags($post->ID);
      $tagIDs = array();
      if ($tags) {
        $tagcount = count($tags);
        for ($i = 0; $i < $tagcount; $i++) {
          $tagIDs[$i] = $tags[$i]->term_id;
      }
      $args=array(
      'tag__in' => $tagIDs,//指定した複数のタグ(表示するページのタグ) のいずれかを含む投稿のみを表示
    	  'post__not_in' => array($post->ID),//表示中のページを除外
    	  'posts_per_page'=>'12',//投稿表示数
    	  'post_type' => 'page',//投稿タイプ array('post','page')なども使える
    	  'orderby'    => 'menu_order',//並び順
    	  'order'      => 'ASC'//降順か昇順か
      );
      $my_query = new WP_Query($args);
      if( $my_query->have_posts() ) {  ?>
    <?php while ($my_query->have_posts()) : $my_query->the_post();//ループのスタート ?>
    <?php endwhile; wp_reset_query(); ?>
    <?php } else { ?>
    <?php } }?>

    さらに、応用編で固定ページに任意のカスタフィールドの値で、関連ページとして表示させるかを選択したい、というケース。

    固定ページでタグ+カスタムフィールドの値で条件分岐させ関連ページとして表示する

    上記のコードに以下を追加すればOK。

    	  'order'      => 'ASC',//降順か昇順か
    	  'meta_key' => 'カスタムフィールド名',//指定したカスタムフィールド
    	  'meta_value' => 'カスタムフィールドの値',//上記カスタムフィールドの値
  • Stripe導入時の注意点JCBに対応せず

    執筆現在、日本ではStripeのベータ版のみが提供されている。

    この時期に導入を検討している場合の注意点は2点。

    1、日本語マニュアル等の用意はなく、メール対応のみ

    Stripeの日本語マニュアルに関して

    2、JCBに対応していない

    Which cards and payment types can I accept with Stripe?

    Australian, Canadian, European, and Japanese businesses can accept Visa, MasterCard, and American Express.

    日本語マニュアルに関しては時期は準備中とのことで、2016年内を期待したい。

    2018年7月24日追記:審査が別途あるがJCB対応を開始している
    https://support.stripe.com/questions/jp-jcb