コメントデータの取得を操作する comments_template_query_args

wp-inclludes/comment-template.phpのなかにコメントの取得とソートに関する変数 &comment_argsがあります。

$comment_args = array(
 'orderby'                   => 'comment_date_gmt',
 'order'                     => 'DSC',
 'status'                    => 'approve',
 'post_id'                   => $post->ID,
 'no_found_rows'             => false,
 'update_comment_meta_cache' => false, // We lazy-load comment meta for performance.
);

このあといろいろごにょごにょして。
コメントのデータを取得しているようです。

フックの一覧を見るとcomments_template_query_argsというのがあるので(version4.5~)ここにフックしてorderbyやorderを変更できそうです。
あと未承認のコメントの表示とかもできそうです。

wp-inclludes/comment-template.phpの該当箇所が(↓)
現在のバージョンは5.1なので1444行目にありますね。

 $comment_args  = apply_filters( 'comments_template_query_args', $comment_args );
 $comment_query = new WP_Comment_Query( $comment_args );
 $_comments     = $comment_query->comments;

コメントを表示する場所で↑を変更します。

//コメント取得のための変数を納めた配列
function edit_comment_query( $comment_args ) {
 $comment_args['order'] = 'ASC';
  return $comment_args;
}
//comments_template_query_argsへフックする
add_filter( 'comments_template_query_args', 'edit_comment_query' );

とりあえず今日はここまで。。。

PHP(PDO)でMySQL(MariaDB)に接続してDBからデータを取得する

今さらながらPHP7対応。
なぜか500エラーを連発してハマってしまったのでうまくいった書き方をメモしときます。

    function DBconnect()
    {
        $DBlink = mysqli_connect('yourdbhost.work', 'username', 'password');

        if (!$DBlink) {
            die('MYSQL接続エラー' . mysqli_error($DBlink));
        }

        mysqli_set_charset($DBlink, 'utf8');

        return $DBlink;
    }

    function DBselect($selectDB, $DBlink)
    {
        $db_selected = mysqli_select_db($DBlink, $selectDB);

        if (!$db_selected) {
            die($selectDB . 'データベース選択エラー' . mysqli_error($DBlink));
        }
    }

    function RunSQL($DBlink, $sql)
    {
        $result = mysqli_query($DBlink, $sql);

        if (!$result) {
            die('クエリーのエラー' . mysqli_error($DBlink));
        }

        return $result;
    }


    function h(string $string): string
    {
        return $string;
    }


    function myfunction()
    {

            $DBlink = DBconnect();
            DBselect('database', $DBlink);
            $records = RunSQL(
                $DBlink,
                "SELECT " .
                "*" .
                "FROM `table`" .
                "ORDER BY `key`;"
            );

            $result = [];

            while ($row = mysqli_fetch_array($records)) {
                //ここに処理を
            }
            return $result;

            mysqli_close($RDBlink);
    };

懐かしい感じですね。
これを↓のように変えさせてもらいました。

define('DSN', 'mysql:host=yourdbhost.work;dbname=dbname;charset=utf8');
define('DB_USERNAME', 'username');
define('DB_PASSWORD', 'password');

try{
    $dbh = new PDO(DSN, DB_USERNAME, DB_PASSWORD,
     array(
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_EMULATE_PREPARES => false,
        )
    );

    $prepare = $dbh->prepare('SELECT * FROM table ORDER BY key');
    $prepare->execute();

    $result = $prepare->fetchAll(PDO::FETCH_ASSOC);

    foreach($result as $r){

      //ここで処理を

    }


} catch (PDOException $e){
    $error = $e->getMessage();
}

macへnodeをインストール

brew install node

ところが

node already installed, it's just not linked

インストールはできたけどリンクされてないから使えないよ!と。。
なおかつリンクを上書きするといいよ!

と言われるので

brew link --overwrite node

とするも、弾かれてしまう。。

下記で解決!

brew uninstall node
 いったんアンインストール
brew update
brew upgrade
 Homebrewを最新に
brew cleanup
 いらないものを消す
brew install node
 もっかいインストール
sudo chown -R $(whoami) /usr/local/
 リンクが書いてあるファイルを上書きできるように権限を変更
 
brew link --overwrite node
 リンクを上書き
brew postinstall node
 これは何かよくわからない

OSアップデートしてsassが使えなくなったら

masomi792017-11-02

症状::

新規案件に着手する前にOSXをHigh Sierraにアップデートしたらsass が使えない!急いでるのに!

sass -v

バージョン確認しようとしただけで。。。

-bash: /usr/local/bin/sass: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby: bad interpreter: No such file or directory

とおこられる。

対策::

1.Xcodeをアップデート
App Storeから行います。

2.ターミナルからRubyを再インストール

brew install rbenv ruby-build

3.sass とcompassを /usr/local/binへインストール

sudo gem install -n /usr/local/bin sass
sudo gem install -n /usr/local/bin compass

というわけでアップデートは慎重に。。。

/wp 以下に作成したWPサイトのトップページだけは独立したページを使用します。


↑のindex.htmlをトップに表示させます。

1) テンプレートファイル template_toppage.phpを作成します。
内容は以下の通り

<?php
/*
Template Name: Top Page
*/
readfile(ABSPATH . '/index.html');
?>

ABSPATHはwordpressがインストールされたフォルダのパスを示します。
ですのでindex.htmlがwp/フォルダ以下にあっても上記の指定でOKです。

2) WP管理画面から固定ページを新規に作成します。
タイトルは「トップページ」などてきとうでかまいません。

テンプレートに先ほど作成したTop Pageが表示されますのでこれを選択します。

3) 「設定」=> 「表示設定」=>「フロントページの表示」で「固定ページ」にチェックをし、先ほど作成したページを選択します。

Yahoo!店舗の製作の際に覚えたこと

画像ファイルのパス

テンプレート内で記入する場合は下記でOK
どのフォルダにアップしてもここに入ります。

<img src="/lib/ストアアカウント/画像ファイル名">

実際のURLは

<img src="http://shopping.c.yimg.jp/lib/ストアアカウント/画像ファイル名">

となるようです。

固定たて帯バナーを設置する
トリプルを使わない場合は外部のstylesheetを読み込めないので、全部インラインで指定する必要があります。

<div style="position:fixed;background-image:url(http://shopping.c.yimg.jp/lib/店舗ID/画像ファイル名);background-repeat:repeat-y;right:0;top:0;height:1000px;width:200px;z-index:-1"></div>

position:fixed;
background-image:url(http://shopping.c.yimg.jp/lib/店舗ID/画像ファイル名);  /*画像ファイル*/
background-repeat:repeat-y;
right:0;
top:0;
height:1000px;
width:200px;
z-index:-1 /*重なった時に下になるように*/

thumbnail,medium,large,fullから選ぶ

<?php the_post_thumbnail('画像のサイズ'); ?>

画像のサイズは下記から指定します。

thumbnail サムネイル
medium
large
full 原寸大

選べるのは4種類だけですが、管理画面からそれぞれのサイズの数値を指定できます。
「設定」→「メディア」から設定できます。