さくらのVPSにKUSANAGIでWordPress設定

https://www.sakura-vps.net/kusanagi-for-sakura-vps-wordpress-setting/

上のURLを参考に設定

ドメインはお名前.com

https://help.sakura.ad.jp/hc/ja/articles/206207381-%E3%83%8D%E3%83%BC%E3%83%A0%E3%82%B5%E3%83%BC%E3%83%90%E5%88%A9%E7%94%A8%E7%94%B3%E8%AB%8B

こ子を参考にname serverを設定(お試し期間だと使えない)

SFTPでアクセスできるよう確認して

今日は最後に
「Let’s Encrypt(無料SSL)」のインストール

kusanagi ssl --email info@example.com my_dir

として、勝手にOKになった

KUSANAGIというのは、セキュリティのためすいすい管理画面からプラグインを入れたりできないみたい

Q2. KUSANAGIサーバにSFTPクライアントで接続し、ファイルの転送を行う際の接続設定を教えて下さい。
A2. 以下のように設定します。
ホスト名:example.com(SSH接続時のホスト名と共通)
ユーザー名:kusanagi
パスワード:[インストール時に設定したユーザー「kusanagi」のパスワード]

Q3. WordPressの管理画面からプラグイン・テーマの追加やWordPressの更新またはプラグインの更新を行おうとしたところ、FTPの接続情報を要求されました。
A3. KUSANAGIでは、セキュリティ対策のため各ディレクトリのアクセス権限等に制限をかけているため、プラグイン・テーマ等の追加や各種更新を行う際にFTPの接続情報を要求されるようになっています。
次のように接続情報を入力することで、作業を続行できます。
ホスト名:localhost
ユーザー名:kusanagi
パスワード:[インストール時に設定したユーザー「kusanagi」のパスワード]


メールアドレスを設定したいが、そこまで進めなかった

この内容は Takumi Hirashima Artworks の http://hirashimatakumi.com/blog/7.html コピーです。

WordPress のプラグイン Advanced custom field の表示方法を紹介します。
Advanced custom field(以下ACF)は WordPress で柔軟なカスタムフィールドを制作できる便利なプラグインです。
この投稿では、基本的な表示方法から取得の際の注意点や、表示されない時の対処方法などを紹介していきます。

1.基本的な表示方法と注意点

まずはACFの基本的な表示方法と表示されない時の対処方法や注意点などを紹介します。

投稿のフィールド値の取得と表示方法

投稿に入力されているフィールド値を表示する場合は the_field() を使用します。

<?php the_field('text_field'); ?>

フィールド名を変更する場合は the_field('text_field') 内のフィールド名 text_field を変更します。
フィールド値を取得したい場合は get_field() を使用します。

<?php $text_field = get_field('text_field'); ?>
取得した値を表示したいときは echo を使います。
<?php echo $text_field; ?>

別の投稿のフィールド値を表示

別の投稿のフィールド値を取得する場合は フィールド名の後にポストIDを指定することでフィールド値を取得できます。
例えば、特定の固定ページに入力されているフィールド値を表示したい場合は、フィールド名の指定の後に該当ページのページIDを指定します。
次コードは、ページIDが 123 の場合の表示方法です。

<?php the_field('text_field',123); ?>

現在表示しているページの親ページIDを取得するには WordPress 直上の親ページのIDやスラッグを取得をご覧ください。

オプションページからフィールド値を取得

ACF のアドオン Options Page(オプションページ)を使ってフィールド値を取得して表示する場合は、フィールド名の後に option を追加します。

<?php the_field('text_field','option'); ?>

または

<?php the_field('text_field','options'); ?>

ACF のアドオンオプションページを使用する場合は option または options を追加します。
オプションページから値の取得がうまくいかない場合はこの項目を確認しましょう。
オプションページの詳しい表示方法は、Advanced Custom Feld のアドオン Options Page の表示方法をご覧ください。

条件分岐を使った表示方法

条件分岐を使った表示方法を紹介します。
次のコードは、if 構文を使った場合の表示方法です。

<?php if(get_field('text_field')): ?>
<?php the_field('text_field'); ?>
<?php endif; ?>

if 構文の時には代入演算子を使うと便利です。
代入演算子を使う場合は必ず get_field() を使います。

<?php $text = get_field('text'); if( $text ): ?>
<?php echo $text; ?>
<?php endif; ?>

if 構文をシンプルにするなら次のような方法もあります。

<?php $text = get_field('text_field'); if( $text ){ echo $text; }?>

Repeater Field のフィールド値を表示

ACF の有料アドオン Repeater Field(リピーターフィールド)を使う場合は the_sub_field() を使います。
Repeater Field の詳細は、Advanced Custom Feld のアドオン Repeater Field の表示方法をご覧ください。

<?php the_sub_field('sub_field_name'); ?>

代入演算子を使う場合は get_sub_field() を使います。

<?php $sub_field_name = get_sub_field('sub_field_name'); ?>

リピーターフィールドの取得がうまくいかない場合は the_sub_field()get_sub_field() になっていることを確認しましょう。

注意点

ACF を使う上での注意点をリストアップしました。
フィールド値が表示されない場合は次の点を確認してみましょう。

  • the_fieldget_field の使い所を間違えている
  • リピーターフィールドの表示で the_fieldthe_sub_field の使い所を間違えている
  • オプションフィールドの表示で option を書き忘れてしまう
  • そもそも指定しているフィールド名が合っていない
  • 画像オブジェクトの返り値の指定が表示の指定と合っていない

などなど

リピーターフィールドや柔軟コンテンツ内で、フィールド値を取得や表示する場合は the_sub_field になります。
これを間違えて「あぁ、表示されない!」ってことがよくあるので気をつけましょう。
次は実践的な表示方法をを紹介していきます。

2.テキストフ​​ィールドの表示

フィールドタイプ「テキスト」「テキストエリア」「数値」「メール」「パスワード」の表示方法を紹介します。
このフィールドタイプは単一の文字列値を格納するのに適しています。

<?php the_field('text'); ?>

3.画像フィールドの表示

画像フィールドの表示方法を紹介します。
テキストフィールドと同じくらい頻繁に使うのが画像フィールドです。
フィールドの表示と取得方法が何通りかあるので、使用する場面を見て使い分けていきましょう。

画像の表示(返り値:オブジェクト)

<?php $image = get_field('image'); if( !empty($image) ): ?>
<img src="<?php echo $image['url']; ?>" alt="<?php echo $image['alt']; ?>" />
<?php endif; ?>

画像の登録が絶対にあるならシンプルにこんな書き方もできます。

<img src="<?php $image = get_field('image'); echo $image['sizes']['medium']; ?>" />

画像の URL やタイトルなどを個別に取り出す場合はこちら。

<?php
$image = get_field('image');
if( !empty($image) ):
// 画像から各種値を取り出す
$url = $image['url']; // URL
$title = $image['title']; // タイトル
$alt = $image['alt']; // 代替テキスト
$caption = $image['caption']; // キャプション
$description = $image['description']; // 説明
// thumbnail
$size = 'thumbnail'; // 画像サイズ thumbnail(サムネイル), medium(中サイズ), large(大サイズ), full(元画像)
$thumb = $image['sizes'][ $size ];
$width = $image['sizes'][ $size . '-width' ]; // 横幅
$height = $image['sizes'][ $size . '-height' ]; // 高さ
?>
<a href="<?php echo $url; ?>" title="<?php echo $title; ?>">
<img src="<?php echo $thumb; ?>" alt="<?php echo $alt; ?>" width="<?php echo $width; ?>" height="<?php echo $height; ?>" />
</a>
<p>
<?php echo $caption; ?>
<?php echo $description; ?>
</p>
<?php endif; ?>

画像の表示(返り値:URL)

次のコードは、画像の返り値がURLの場合の表示方法です。

<?php if( get_field('image') ): ?>
<img src="<?php the_field('image'); ?>" />
<?php endif; ?>

画像の表示(返り値:ID)

次のコードは、画像の返り値がIDの場合の表示方法です。

<?php
$image = get_field('image');
$size = 'full'; // (thumbnail, medium, large, full or custom size)
if( $image ) {
echo wp_get_attachment_image( $image, $size );
}
?>

画像の登録が絶対にあるならシンプルにこんな書き方もできます。

<?php echo wp_get_attachment_image(the_field('image'),'large'); ?>

4.チェックボックス・ラジオボタンフィールドの表示

チェックボックスフィールドとラジオボタンフィールドの表示方法を紹介します。

値が一つの場合

チェックボックスフィールドとラジオボタンフィールドで値が一つの場合の表示方法を紹介します。
次のコードは、フィールド名が colors 登録している値とラベルが red:赤 の場合に値 red を表示します。

<?php the_field('colors'); ?>

値が複数の場合

チェックボックスフィールドで登録した値が複数の場合の表示方法です。
次のコードは、フィールド名が colors 登録している値とラベルが red:赤 blue:青 green:緑 の場合に red,blue,green, を表示します。

<?php
$colors = get_field('colors'); // 値の代入
if( $colors ){
echo implode(', ', $colors); // 配列要素を文字列「, 」で連結して表示
}
?>

値をタグなどで囲む場合は次のような方法があります。
次のコードは、フィールド名が colors の場合に項目をリストにして表示する方法です。

<?php $field = get_field('colors'); if ($field): ?>
<ul>
<?php foreach( $field as $value ): ?>
<li>
<?php echo $value; ?>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>

条件付きで表示する場合

チェックボックスフィールドとラジオボタンフィールドで値を条件付きで表示する方法を紹介します。
フィールド名が colors 登録している値が red:赤 の登録があるかどうかを判別して表示する方法です。

<?php if(get_field('colors') == 'red') { echo 'red'; } ?>

ラベルを取得する場合

ラジオボタンフィールドでラベルを取得して表示する方法を紹介します。
次のコードは、フィールド名が colors 登録している値とラベルが red:赤 の場合にラベル赤を表示します。

<?php
$field = get_field_object('colors');
$value = $field['value'];
$label = $field['choices'][ $value ]; // ラベルを取得
echo $label; // ラベルを表示
?>

チェックボックスフィールドでラベルを取得して表示する方法を紹介します。
次のコードは、フィールド名が colors 登録している値が red:赤 の場合にラベル(赤)を表示します。

<?php
$field = get_field_object('colors');
$colors = $field['value'];
if( $colors ){
foreach( $colors as $color ){
echo $field['choices'][ $color ];
}
}
?>

5.セレクタフィールドの表示

セレクタフィールドの表示方法を紹介します。
セレクターフィールドはチェックボックスとラジオボタンに似た表示方法になります。

値が一つの場合

セレクターフィールドで値が一つ場合の表示方法を紹介します。
次のコードは、フィールド名が colors 登録している値とラベルが red:赤 の場合に red を表示します。

<?php the_field('colors'); ?>

値が複数の場合

セレクターフィールドで登録した値が複数の場合の表示方法です。
次のコードは、フィールド名が colors 登録している値とラベルが red:赤 blue:青 green:緑 の場合に red,blue,green, を表示します。

<?php
$colors = get_field('colors'); // 値の代入
if( $colors ){
echo implode(', ', $colors); // 配列要素を文字列「, 」で連結して表示
}
?>

条件付きで表示する場合

セレクターフィールドで値を条件付きで表示する方法を紹介します。
フィールド名が colors 登録している値が red:赤 の登録があるかどうかを判別して表示する方法です。


<?php if(get_field('colors') == 'red') { echo 'red'; } ?>

次のコードは、値が複数の場合の表示方法です。

<?php
if(in_array('red', get_field('colors'))) {
echo '選択したのは red です';
} elseif(in_array('blue', get_field('colors'))) {
echo '選択したのは blue です';
}
?>

ラベルを取得する場合

セレクトフィールドのラベルを取得して表示する方法を紹介します。
次のコードは、フィールド名が colors 登録している値とラベルが red:赤 の場合にラベル赤を表示します。

<?php
$field = get_field_object('colors');
$value = $field['value'];
$label = $field['choices'][ $value ]; // ラベルの取得
echo $label; // ラベルを表示
?>

6.投稿オブジェクトの表示

投稿オブジェクトを表示する方法を紹介します。

投稿オブジェクトが一つの場合

次のコードは、フィールド名が post_objects の場合に、投稿のタイトル・リンク・アイキャッチ画像を表示します。

<?php $post_objects = get_field('post_objects'); if( $post_objects ): // 投稿オブジェクトの取得 ?>
<a href="<?php echo get_permalink($post_objects->ID); // ID指定でリンクを取得 ?>">
<?php if ( has_post_thumbnail($post_objects->ID)): //アイキャッチ画像があれば ?>
<?php //アイキャッチ画像の取得
$thumbnail_id = get_post_thumbnail_id($post_objects->ID); // アタッチメントIDの取得
$image = wp_get_attachment_image_src($thumbnail_id,'full'); //「full」サイズのアイキャッチの情報を取得
$src = $image[0];    // URL
$width = $image[1];  // 横幅
$height = $image[2]; // 高さ
echo '<img src="'.$src.'" width="'.$width.'" height="'.$height.'" />';
?>
<?php else: //画像がない場合 ?>
<img src="<?php echo get_template_directory_uri(); ?>/img/nowprinting.png" alt="nowprinting" />
<?php endif; ?>
<?php echo get_the_title($post_objects->ID); //タイトルの取得 ?>
</a>
<?php endif; ?>

投稿オブジェクトが複数の場合(グローバル変数へセットする場合)

グローバル変数へセットすることで、通常の投稿と同じような関数で値を取得することができます。
ここで重要なのは、グローバル変数へセットした時は必ずポストオブジェクトをリセットすることです。
ここでポストオブジェックトをリセットしないと、ページの残りの部分が正常に動作しない場合があります。

<?php $acf_post_objects = get_field('post_objects'); if( $acf_post_objects ): ?>
<ul>
<?php foreach( $acf_post_objects as $post): // ループの開始 ?>
<?php setup_postdata($post); // 重要! setup_postdata でポストオブジェクトを呼び出します ?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<span>カスタムフィールド<?php the_field('field_name'); ?></span>
</li>
<?php endforeach; // ループの終了 ?>
</ul>
<?php wp_reset_postdata(); // ページの残りの部分は正常に動作するように、ポストオブジェクトをリセットします ?>
<?php endif; ?>

投稿オブジェクトが複数の場合(グローバル変数へセットしない場合)

グローバル変数へセットしない場合は投稿IDから各種値を取得します。

<?php $acf_post_objects = get_field('post_objects'); if( $acf_post_objects ): ?>
<ul>
<?php foreach( $acf_post_objects as $acf_post_object): // ループの開始 ?>
<li>
<a href="<?php echo get_permalink($acf_post_object->ID); ?>"><?php echo get_the_title($acf_post_object->ID); ?></a>
<span>カスタムフィールド:<?php the_field('field_name', $acf_post_object->ID); ?></span>
</li>
<?php endforeach; // ループの終了 ?>
</ul>
<?php endif;?>

7.デイトピッカーの表示

デイトピッカーフィールド(日付)の表示方法を紹介します。

基本の表示

次のコードは、フィールド名が date の場合の表示方法です。

<?php the_field('date'); ?>

高度な表示

表示される日付の値をカスタマイズしたい場合は、次のように調整することが可能です。
次のコードは YYYYMMDD の形式で保存された生の値を取得し、それを修正するために数値を変換する方法です。

<?php
$date = get_field('date', false, false); //値の取得
$date = new DateTime($date); //日付オブジェクトの作成
echo $date->format('j M Y'); //日付の表示
?>

その他

その他に、直接日本語表記に変更したい場合は、管理画面で以下のフィールドの設定を任意で変更してみましょう。

Display Format
表示フォーマット
管理画面に表示されるときの日付形式を入力します。年月日を入れて値を返したい場合は「yy年m月d日」とするのがよいでしょう。
Return format
フォーマットを保存する
表示される値の日付形式を入力します。値は常にDBでYYYYMMDDとして保存されることに注意してください。年月日を入れて値を返したい場合は「yy年m月d日」とするのがよいでしょう。
Week Starts On
週の開始
週を開始する曜日を指定します

[WordPress] カスタムフィールドで絞り込んで一覧表示する

[WordPress] カスタムフィールドで絞り込んで一覧表示する


の内容を引用してます

なんども調べるから、、、

WordPressでカスタムフィールドの値によって投稿を絞り込む方法のメモです。
カスタムフィールドが特定の値の投稿を取得する

カスタムフィールドが特定の値の投稿を取得する方法です。
例として、投稿タイプ『test』で『city』というカスタムフィールドの値が『神戸』という投稿を絞り込んで取得します。

投稿タイプ(post_type):test
カスタムフィールドキー(meta_key):city
カスタムフィールド値(meta_value):神戸

$args = Array(
            'post_type' => 'test',
            'posts_per_page' => -1,
            'meta_key' => 'city',
            'meta_value' => '神戸'
        );
$the_query = new WP_Query($args);
if($the_query -> have_posts()):
    while($the_query -> have_posts()): $the_query -> the_post();
        //ここに処理を記述
    endwhile;
endif;
wp_reset_postdata();

posts_per_pageは-1で全件取得です。
以後、7行目以降の記述は同じなので省略します。今後は条件部分だけの記述にします。

カスタムフィールドの値で並び替える

今度はカスタムフィールドの値で並び替える方法です。
例として、カスタムフィールドキーが『city』の投稿をそのカスタムフィールドの値で降順(DESC)に並び替えます。

$args = Array(
            'post_type' => 'test',
            'posts_per_page' => -1,
            'meta_key' => 'city',
            'orderby' => 'meta_value',
            'order' => 'DESC'
        );

※明言どおり条件部分だけの記述にしました。
meta_queryを使って条件を指定する

meta_queryを使うとパラメータが異なり、違った条件指定ができるようになります。
例えばLIEK検索。『address』というカスタムフィールドに『神戸市』が含まれている投稿を取得する場合


$args = Array(
            'post_type' => 'test',
            'posts_per_page' => -1,
            'meta_query' => array(array(
                                'key' => 'address',
                                'value' => '神戸市',
                                'compare' => 'LIKE'
                            ))
        );

SQLのように『%』付ける必要はありません。WP_Query実行時に値の前後に自動で『%』が付与されるからです。
LIKEだけでなく、NOT LIKEやINなども指定できます。
使用できるパラメーターは以下の「5.12 カスタムフィールドパラメータ』を参考にしてください。

関数リファレンス/WP Query

もっと複雑な条件を指定してみる

meta_queryを使えば、もっと複雑な条件も指定することができるようになります。
例として、カスタムフィールド『pref』が『兵庫県』のみに絞り込み、カスタムフィールド『address』の値で昇順に並び替えてみます

$args = Array(
            'post_type' => 'test',
            'posts_per_page' => -1,
            'meta_key' => 'address',
            'orderby' => 'meta_value',
            'order' => 'ASC',
            'meta_query' => array(array(
                                'key' => 'pref',
                                'value' => '兵庫県'
                            ))
        );

他にも、カスタムフィールド『pref』が『兵庫県』のみに絞り込み、カスタムフィールド『city』の値が『西宮』『尼崎』『伊丹』以外の投稿を取得する場合は、以下のようになります。

$no_cities = array('西宮', '尼崎', '伊丹');
$args = Array(
            'post_type' => 'test',
            'posts_per_page' => -1,
            'meta_key' => 'pref',
            'meta_value' => '兵庫県',
            'meta_query' => array(array(
                                'key' => 'city',
                                'value' => $no_cities,
                                'compare' => 'NOT IN'
                            ))
        );

いろんな絞り込みができるようになるのでとても便利です。

【参考サイト】
query_posts(WP_Queryクラス)でカスタムフィールドを使う

最近 WORDPRESS CODE

サイト名

<?php bloginfo('name'); ?>

//サイトアドレス
<?php echo esc_url( home_url( '/' ) ); ?>
//スタイルシート
<?php echo get_stylesheet_uri(); ?>
//テンプレデレク鳥
<?php echo get_stylesheet_directory_uri(); ?>

//親テーマの場合(基本)
<?php echo get_template_directory_uri(); ?>
//子テーマの場合
<?php echo get_stylesheet_directory_uri(); ?>

//タイトルリンク付き
//<a href="<?php bloginfo('url'); ?>" title="<?php bloginfo('name'); ?>"><?php bloginfo('name'); ?></a>
//詳細
//<p><?php bloginfo('description'); ?> </p>

<?php the_title(); ?> 
<?php the_date(); ?>
<?php the_content(); ?>
<?php the_excerpt(); ?>

//本文を出したい数だけ
<?php echo mb_substr($post->post_title, 0, 50); ?>
<?php echo mb_substr($post->post_title, 0, 30).'……'; ?>

//本文のタグと改行をとって任意の数表示
<?php
if(mb_strlen($post->post_content,'UTF-8')>200){
	$content= str_replace('\n', '', mb_substr(strip_tags($post-> post_content), 0, 200,'UTF-8'));
	echo $content.'……';
}else{
	echo str_replace('\n', '', strip_tags($post->post_content));
}
?>
スマホだけ改行
<div class="clearfix visible-xs-block"></div>

<?php echo do_shortcode('[ショートコードして文字列]'); ?>

フロントだけ
<?php if ( is_home() || is_front_page() ) : ?>
<?php echo do_shortcode('[rev_slider alias="name1"]'); ?>
<?php endif; ?>


最近のWordPress案件でプラグイン

最近のWordPress案件でプラグイン

Advanced Custom Fields Customise WordPress with powerful, professional and intuitive fields

Breadcrumb NavXT 訪問者に対し現在地へのパスを表示する「パンくずリスト」ナビゲーションをサイトに追加します。

Bulk Registration Terms タームを一括登録します。

Category Order and Taxonomy Terms Order Category Order and Taxonomy Terms Order

Duplicator Create a backup of your WordPress files and database. Duplicate and move an entire site from one location to another in a few steps. Create a full snapshot of your site at any point in time.

Password Protected  認証

Post Expirator 日付で下げたり上げたり

PS Taxonomy Expander PS Taxonomy Expanderは、カテゴリー・タグ、そしてカスタム分類の記事編集時における使い勝手を向上させます。

Search & Filter Pro    サーチ系

SiteGuard WP Plugin SiteGuard WP Pluginは、WordPressにインストールするだけで、セキュリティを向上させることができます。SiteGurad WP Pluginは、管理ページとログインに関する攻撃からの防御に特化したセキュリティプラグインです。WAF ( SiteGuard Lite )の除外ルールを作成する機能もあります。( 使用するにはWAFがWebサーバーにインストールされている必要があります )

WordPress HTTPS WordPress HTTPS is intended to be an all-in-one solution to using SSL on WordPress sites.

WP Lightbox 2

WP Media folder

Wp Pagenavi

Wp Pagenavi Style

リディレクション

Exec-PHP 記事やウィジェット内でPHPを使えるようにする



最近使ってよかったプラグイン

最近使ってよかったプラグイン

Bulk Registration Terms
タームを一括登録します。
都道府県を複数のカスタム投稿で設定する必要があった時、すごい便利だった。

Post Expirator
掲載日時指定 取り下げ日時も指定

PS Taxonomy Expander
管理画面でつかんで記事の並べ替え

WP Media folder
メディアの中をフォルダ分け
※有料

Duplicator
まるごとバックアップ

ああプラグインすげえ便利

Welcartの商品検索を or じゃなくて and にする

AND検索がデフォなんだけどOR検索いしたい、どうしても。

自分のテーマにコピーした usc-e-shop>templates>wc_search_page.php

$search_query = array(‘category__and’ => $catresult, ‘posts_per_page’ => 10, ‘paged’ => $uscpaged);

これを

$search_query = array(‘category__in’ => $catresult, ‘posts_per_page’ => 10, ‘paged’ => $uscpaged);

こう

ここを参考にした。

WebDesignRoom