Xserver SSH接続方法

Xserver 接続時の注意事項

プロトコルはSFTP

サーバーアドレス はサーバー情報のホスト名

ここが間違いやすい

ユーザー名は サーバーパネルのログインID

注意!! サーバー番号は、サーバーIDではない!!

f:id:happy_teeth_ago:20200809224226j:plain

サーバー番号はこちら

f:id:happy_teeth_ago:20200809224557j:plain

パスワードは ssh鍵のパスワード

ポート番号は 10022

うまく行かないときはターミナルでつなげること!

ssh ユーザー名@ホスト名 -i 秘密鍵ファイルのパス -p ポート番号

エラーを返してくれるので原因が特定しやすい

//permissionがないと言われている
.xserver.jp: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

サーバーIDが違うことに気づいた
ちなみに鍵は400番にしておくこと
chmod 400 [秘密鍵]

原因として、一番多いのがこのパーミッションや所有者設定

sshの仕様上、各ディレクトリは以下のようなパーミッションになっていなければならない。

「~/.ssh」ディレクトリ … 700(drwx------) 「~/.ssh/authorized_keys」ファイル … 600(-rw-------)

ちなみにXserverの場合秘密鍵は400にしておいた。

あと、ターミナルでssh接続するとつながるので coda2でつながらなければ、まずターミナルから接続するのが良い もちろんディレクトリやファイルの所有者はホームディレクトリのユーザである必要がある。 もし設定がうまく出来ていない場合は、対象のユーザで以下のコマンドを実行して再設定を行う。

WordPress 記事の抜粋を取得・表示、文字数・文末[…]のカスタマイズ

記事が長いので、50文字目までを出力したい

//$post->contentに入っている記事の 0番目から50文字目までを取って $contentに詰め込みなさい
<?php $content = mb_substr($post->content, 0, 50, 'UTF-8');

//$contentと ... を足して出力しなさい
echo $content . '...'; ?>

出力結果 ' ...' が出力されている

f:id:happy_teeth_ago:20200806165550p:plain

mb_substrの関数定義はこちら

https://www.php.net/manual/ja/function.mb-substr.php

WordPress テーマ 固定ページ,Navメニュー作成方法

ファイル名は page.php

WordPressループは回す

WordPressループを回さないと、管理画面からの入力を表示することが出来ないため

//もし、記事があったら
<?php if (have_posts()) :?>

//記事の数だけループしなさい 固定ページは1つしかないけど、、、
    <?php while (have_posts()): the_post(); ?>

//タイトルを表示しなさい
    <h2 class="pageTitle"><?php the_title(); ?><span><?= strtoupper($post->post_name) ; ?></span></h2>

    <main class="main">
        <div class="container">
            <div class="content">

//管理画面で入力した記事を表示しなさい
                <?php the_content(); ?>
            </div>
        </div>
    </main>

    <?php endwhile; ?>
<?php endif; ?>

Nav Menuを利用できるようにする

functions.phpに追記

//メニューを管理画面に追加
add_theme_support('menus');

function register_my_menus() {
  register_nav_menus( array( //複数のナビゲーションメニューを登録する関数
  //'「メニューの位置」の識別子' => 'メニューの説明の文字列',
    'main-menu' => 'Main_menu',
    'footer-menu'  => 'Footer_menu',
  ) );
}
//上記メニューを登録
add_action( 'after_setup_theme', 'register_my_menus' );

これで管理画面に menus が表示される

f:id:happy_teeth_ago:20200801162305j:plain:w100

wp_nav_menu($args)

header.phpに記載する
ulタグとliタグを出力するのに注意すること

//これは下記のHTMLを出力する
                <?php
                    $args = array(

//管理画面で指定するもの下記画像参照
                        'menu' => 'Main_menu',
//ulタグのクラス名
                        'menu_class' => '',
//ulをdivかnavで包み込むか?
                        'container' => 'false',
                    );

//これで配置
                    wp_nav_menu( $args );
                ?>


//===これが上記と同じになる
   <ul class="">
                    <li><a href="#">HOME</a></li>
                    <li><a href="#">わたしたちについて</a></li>
                    <li><a href="#">アクセス</a></li>
                    <li><a href="#">最新情報</a></li>
                    <li><a href="#">お問い合わせ</a></li>
   </ul>

[f:id:happy_teeth_ago:20200806155323j:plain:600]

公式サイトドキュメント wp_nav_menu() Walker

https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/wp_nav_menu#.E3.82.AB.E3.82.B9.E3.82.BF.E3.83.A0.E3.82.A6.E3.82.A9.E3.83.BC.E3.82.AB.E3.83.BC.E3.82.AF.E3.83.A9.E3.82.B9.E3.82.92.E4.BD.BF.E7.94.A8.E3.81.99.E3.82.8B

WordPress searchフォームの作成

まずHTMLで書くと理解しやすい

WordPressで検索フォームを作成するときのポイントは

1) name属性に sを指定

2) form のmethod は当然 get(読み取り)ということ

3) action(送付先) にはTOPページのurlを設定

valueには the_search_query() を渡しておくと便利 (なくても可能)

<form method="get" action="(サイトのTOPページURL)">
    <label  for="s">検索:</label>
    <input type="text" value="" name="s" id="s" />
    <input type="submit"  value="検索" />
</form>

これをあとはWordPressの関数を使って書けば良い

//method はget actionは home_url()
 <form class="header_search" method="get" action="<?= home_url(); ?>">

//name属性にはsを渡す value はthe_search_query()
                <input type="text" name="s" value="<?php the_search_query(); ?>" placeholder="キーワードを入力">
               
 </form>

テンプレートファイルにする

テンプレートファイル名はserachform.phpにするというWordPressの決まり

呼び出し側は get_search_from()で呼び出す

呼び出し側

<?php get_search_form(); ?>

f:id:happy_teeth_ago:20200803115552p:plain

HTMLを確認すると入力した値が渡っているのがわかります。

f:id:happy_teeth_ago:20200803115719p:plain

検索結果表示

検索結果表示ファイル名は search.php

検索でなく、結果を表示するので注意が必要

WordPressでカテゴリー一覧へのリンクを表示する

ページ内でカテゴリのリンクを表示する場合は

get_categories( )関数を利用

<?php
    
    $args = array(

// 親カテゴリーのものだけを一覧で取得
        'parent' => 0,
        'orderby' => 'term_order',
        'order' => 'ASC'
    );

//$categoriesに詰め込む
    $categories = get_categories( $args );
?>

//ループで回す
<?php foreach( $categories as $category ) : ?>
    <li>
        <a href="<?php echo get_category_link( $category->term_id ); ?>"><?php echo $category->name; ?></a>
    </li>
<?php endforeach; ?>

カテゴリーへのリンクを表示する場合は

get_term_by( ) 関数と

get_term_link( )関数を利用する

 <?php

//slug が newsのオブジェクトを詰め込む
                $news = get_term_by( 'slug', 'news','category');

//カテゴリへのリンクを生成 第2引数はタクソノミ
                $news_link = get_term_link( $news, 'category' );
                var_dump($news);

//===$newsにはこんな感じでオブジェクトが入っている
 public 'term_id' => int 3
  public 'name' => string 'news' (length=4)
  public 'slug' => string 'news' (length=4)
  public 'term_group' => int 0
  public 'term_taxonomy_id' => int 3
  public 'taxonomy' => string 'category' (length=8)
  public 'description' => string '' (length=0)
  public 'parent' => int 0
  public 'count' => int 3
  public 'filter' => string 'raw' (length=3)

            ?>

//リンクを出力
<a href="<?= $news_link ?>" class="btn btn-default">最新情報の一覧<i class="fas fa-angle-right"></i></a>
            

laravel エラー解決法 一覧

変数の値を確認したいとき

print_r(知りたい変数); die();

f:id:happy_teeth_ago:20200727134020p:plain

ログの確認

500 Internal Server Error サーバー側のプログラムがエラーを吐いた状態です。

storage/logs ディレクトリを確認する

その1 エラーは1行前をチェックすべし!

シンタックスエラー(文法間違い)だったけど、1行上が間違っていることが多い
blade.phpは間にHTMLが入っているため、すぐ上の行とは限らない

PHPのコードのすぐ上と理解する。

//実際は、ここがエラーだった。)が抜けていた
    <link href="{{ asset('css/app/tamazon.css') }}" rel="stylesheet">
     
</head>
<body>
    <div id="app">
        <nav class="navbar navbar-expand-md navbar-light bg-white shadow-sm">
            <div class="container">
                <a class="navbar-brand" href="{{ url('/') }}">

//laravelでは、ここがエラーと表示されていた
                    {{ Config::get('const.name') }}

その2 キャッシュ系を疑う

キャッシュのクリアのコマンド

php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear

ちょっと踏み込んだキャッシュのクリア

composer dump-autoload
php artisan clear-compiled
php artisan optimize
php artisan config:cache

ここのページが良さそう。

blog.capilano-fw.com