タグ: WordPress

  • mixhost を使った感想(主に WordPress について)

    mixhost を使った感想(主に WordPress について)

    ConoHa WING を使った感想XSERVER を使った感想 に続いて、mixhost でも同じように感想を謳ってみたいと思います。

    僕が管理している WordPress サイトを mixhost に移行、同時にすっぴんの状態の WordPress をインストールして感触を探ってみたので、その途中につらつら記述した Just another メモです。ご参考になれば幸いです。

    (さらに…)
  • XSERVER を使った感想(主に WordPress について)

    XSERVER を使った感想(主に WordPress について)

    引き続きまして、僕が管理している某施設の WordPress サイトのデモサイト(検証環境)を XSERVER に移行、同時にすっぴんの状態の WordPress をインストールして感触を探ってみたので、その途中につらつら記述した Just another メモです。ご参考になれば幸いです。

    (さらに…)
  • ConoHa WING を使った感想(主に WordPress について)

    ConoHa WING を使った感想(主に WordPress について)

    おぉぉw 見事に放置されたブログを約1年半ぶりに更新してみましたw

    このブログは以前、CPI の ACE01 ってプランで動いてたんですが、どうにもプランが時代遅れな感じ拭えなくて、引っ越してみました。クラウドとかも考えたけど、どうせなら仕事の役に立つことも考えて、

    上記5つのサービスを契約してみました。全部のコントロールパネルに精通してるってカッコよくないですか?そうでもないですか?そうですか、ご理解いただけなくて残念です。

    とか言ってみましたが、まず最初にこのブログを ConoHa WING に移行、同時にすっぴんの状態の WordPress をインストールして感触を探ってみたので、その途中につらつら記述した Just another メモです。ご参考になれば幸いです。

    (さらに…)
  • AWSで強固なWordPressを実行する環境を作って、その手順をドキュメント化したら連載できるレベルのものになってしまった。

    AWSで強固なWordPressを実行する環境を作って、その手順をドキュメント化したら連載できるレベルのものになってしまった。

    お仕事でサーバ構築まわりは避けて通ってきたけど、まぁそれもなかなか不自由というか、無責任というかアレなので、このテンプレならできますよ!って言えるレベルのものを作っておこうと思ったら、結構大変だったというアピールですw

    めざす構図はこれ。

    CloudFrontのキャッシュやらで高速化を実現しつつ、負荷分散という名目で複数台構成とし、そんなに大層なサイトからはやっぱり逃げようという趣旨のオートスケーリング抜きw

    ここから削る(サーバ1台とかRDS使わないとか)ことは簡単だから、とりあえずここまで作ってみたら後が楽かと。

    このブログでその手順を晒すつもりはないけど、自分でまとめたドキュメントはこんな感じの15章構成となってしまった……。

    (ちなみに技術メモに愛用しているのは Boostnote です)

    実際に構築してみて思ったことは、やっぱりレンタルサーバより高いな、です。

    お仕事お待ちしてますw

    Amazon Web Services実践入門 WEB+DB PRESS plus
    技術評論社 (2018-11-14)
    売り上げランキング: 14,807
  • WordPress の年別アーカイブを年度別(4月はじまり)にカスタマイズする方法。

    Google先生に聞いたらすぐ出てくると思ったけど、なかなかうまく情報が拾えず、自前でゴニョゴニョする必要があったので備忘録的メモ。

    学校や役所がらみだと、年別アーカイブを年度別(4月1日はじまり3月末締め)で情報を出す必要がある場合あり。
    というか、あった。

    まずは、pre_get_postsで、ループ前に変更。

    function custom__pre_get_posts( $query ) {
        if ( is_admin() || ! $query->is_main_query() ) {
            return $query;
        }
    
        if ( is_year() ) {
            $y = get_query_var( 'year' );
            $date_from = $y . '-04-01';
            $date_to = ( $y + 1 ) . '-03-31 23:59:59';
            $query->set( 'date_query', array(
                'compare' => 'BETWEEN',
                'after' => $date_from,
                'before' => $date_to,
                'inclusive' => true,
            ) );
            $query->set( 'year', null ); //元々あった年指定を削除
        }
        return $query;
    }
    add_action( 'pre_get_posts', 'custom__pre_get_posts' );

    これでOK。

  • WordPressの超便利プラグイン MW WP Formの管理者宛メールにREMOTE_ADDRとUSER_AGENTを追加する方法。

    意外とGoogle先生の回答に出てこないのでココでメモ。

    フィルターフックの mwform_custom_mail_tag を使います。

    functions.php に以下のコードを貼り付けます。

    function add_sender_mwform_mail_tag( $value, $key, $insert_contact_data_id ) {
        if ( 'user_agent' === $key ) {
            return $_SERVER[ 'HTTP_USER_AGENT' ];
        }
        if ( 'remote_addr' === $key ) {
            return $_SERVER[ 'REMOTE_ADDR' ];
        }
        return $value;
    }
    add_filter( 'mwform_custom_mail_tag', 'add_sender_mwform_mail_tag', 10, 3 );

    んで、管理者宛メール設定の本文欄末尾に以下のテキストを貼り付け。

    --- 送信者情報 ---
    REMOTE_ADDR: {remote_addr}
    USER_AGENT: {user_agent}

    That’s all.

    Googleで「MW WP Form user_agent remote_host」的な検索をすると、だいたい mwform_custom_mail_tag_mw-wp-form-xxx が検索結果として出て来るんだけど、これだとテストサーバと公開サーバでお問い合わせフォームIDが違ってたりしてキーーーってなるので、前述のほうが便利だと思うよ、知らんけど。

  • Advanced Custom Fields の「関連」「投稿オブジェクト」はとても便利だけど、非公開の記事まで公開されちゃから要注意だよ、という話。

    Advanced Custom Fields プラグイン。
    めっちゃ便利です。
    WordPress案件だと必須だというくらい重宝させていただいています。

    で、その機能の中に「関連」「投稿オブジェクト」というフィールドタイプがあります(両方共似たようなもん)。
    ブログ記事に関連する記事を手動でピックアップして関連付けるという機能です。
    ・シリーズ物の記事の過去記事を関連付けたり。
    ・ブログ記事に、店舗用カスタム投稿を関連付けて、新たな導線を作ったり。
    ・トップページ用のスライダーをオプションページで作成したり。

    で、つい最近、それについて納品先から指摘がありました。
    「非公開記事が出ちゃってるんだけど……。」

    (;・∀・)

    出ますね。
    非公開記事も予約投稿も選択できちゃうし、公開してないのに出ちゃいますね。

    というわけで、こちらの対応はテンプレートファイルからの呼び出し側にてコントロールします。
    なぜ、プラグインの方を改修しないの?という疑問については、予約投稿をしたものも「関連」で選択したいし、という理由です。

    ついでに、非公開記事については、管理者ログイン中には【非公開: 記事タイトル】という感じで出すようにします。
    (通常のループの中と似たようにします)

    以下のスクリプトは、オプションページでトップページ用のおすすめ記事を出す!という例になります。

    <?php
    $articles = get_field( 'acf-pickup-articles', 'option' );
    $current_user = wp_get_current_user()
    ?>
    <?php if ( ! empty( $articles ) ) : ?>
        <ul>
            <?php foreach ( $articles as $article ) : ?>
                <?php if ( 'publish' == $article->post_status || ( 'private' == $article->post_status && is_user_logged_in() && in_array( 'administrator', $current_user->roles ) ) ) : ?>
                    <li>
                        <p class="title">
                            <a href="<?php echo esc_url( get_permalink( $article->ID ) ); ?>">
                                <?php if ( 'private' == $article->post_status && is_user_logged_in() && in_array( 'administrator', $current_user->roles ) ) : ?>
                                    非公開:
                                <?php endif; ?>
                                <?php echo esc_html( $article->post_title ); ?>
                            </a>
                        </p>
                    </li>
                <?php endif; ?>
            <?php endforeach; ?>
        </ul>
    <?php endif; ?>

    とっても便利なプラグインはとっても便利だけど、自分が作っていないだけに全仕様を把握して使うわけではありません。
    ちゃんと動く理屈を把握して使いましょうね、という話でした。

  • WordPressの固定ページで、WP_Queryで記事を取得するもページネーション(the_posts_pagination)がうまく動作しない場合の解決方法。

    ちょいと調べてみたけど、結構その対応手段がネットに公開されていなかったので、ソース調べてみた。

    get_the_posts_pagination() 内で、$GLOBALS['wp_query']->max_num_pages が1以上じゃないと処理をしないのに、固定ページ内で WP_Query を回しても $GLOBALS['wp_query']->max_num_pages には値が入っていないのが原因。

    なので、自分でぶっ込んでやれば良いみたい。

    <?php
    //pagedに値をセットするのを忘れずに!
    $the_query = new WP_Query( array(
      'paged'       => get_query_var( 'paged' ) ? intval( get_query_var( 'paged' ) ) : 1,
      'post_type'   => 'post'
    ) ); ?>
    
    <?php	if ( $the_query->have_posts() ) while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
    
    <!--ここで記事を表示-->
    
    <?php	endwhile; ?>
    
    <?php
    //ページネーション表示前に$GLOBALS['wp_query']->max_num_pagesに値をセット
    $GLOBALS['wp_query']->max_num_pages = $the_query->max_num_pages;
    the_posts_pagination();
    wp_reset_postdata();
    ?>

    こんな感じ。(2016年1月28日現在。WordPressのバージョンは4.4.1)

  • Gitで差分ファイルのアーカイブ(ZIP)を取得する。特に“/usr/bin/git: Argument list too long”と怒られた人向け。

    これに至った経緯。

    ・すでに稼働中のWebサイト(他社が構築したもの)の改修案件。
    ・既存のソースをすべてGitにぶち込んで、SourceTreeで管理。
    ・WordPressで構築されているのでファイル多杉。差分ファイルだけを納品したい。

    みたいな感じ。

    20150528_01
    こんな感じで、Commandクリックで2つ選択して、その差分ファイルをZIPで書きだそうぜ!という試み。

    手順としては、ターミナルから動作するシェルプログラムを作成して、それをSourceTreeのカスタムアクションに登録して起動させるというもの。

    まずはシェルの作成。

    diff_archive.sh

    #!/bin/sh
    if [ "$2" = "" ]; then
    	git diff --name-only HEAD $1 | xargs git archive --format=zip --prefix=_diff_archive/ HEAD -o _diff_archive.zip
    else
    	git diff --name-only $1 $2 | xargs git archive --format=zip --prefix=_diff_archive/ $1 -o _diff_archive.zip
    fi

    ネットでよく見かけるのは、

    git archive --format=zip --prefix=archive/ $1 `git diff --name-only $1 $2` -o archive.zip

    こんな感じのもの。この場合、差分ファイル数が多すぎる場合、/usr/bin/git: Argument list too longって怒られます。その対策として、多少環境に依存しちゃいますが、xargsでgit archiveに放り込んで行きます。

    んで、このシェル(diff_archive.sh)に実行権限を付与。
    右クリックの「情報を見る」で、ユーザ行の実行チェックボックスをチェック。

    次に、そのシェルプログラムをSourceTreeのカスタムアクションに登録。

    20150528_02
    SourceTreeの環境設定から、カスタムアクションタブを開いて、アクションを追加。

    これで準備完了。
    このエントリーの最初の画像のように、2つのコミット行を選択して、右クリック。
    カスタムアクションから「指定された差分をZIPで書きだす」(追加したアクションで登録した名称)をクリックで、gitのディレクトリに_diff_archive.zipが書きだされます。

    参考サイト

    Argument list too longって怒られない人向け
    http://ics-web.jp/lab/archives/4475

    怒られちゃった人への対処方法
    http://blog.shnr.net/gitで差分のエクスポート/

    で、このページがその両方をまとめたものになります。

    Gitが、おもしろいほどわかる基本の使い方33〈バージョン管理、SourceTree、Bitbucket〉
    大串 肇 久保靖資 豊沢泰尚
    エムディエヌコーポレーション
    売り上げランキング: 4,591