WordPress ログインリダイレクトの制御

Filed under: functions.php,wordpress — kdcs @ 2022年4月14日 木曜日

ログイン画面へのurlにパラメータを付加するとログイン時にそのurlへリダイレクトされる。

https://hoge-hoge.com/wp-login.php?redirect_to= url

例えば、リダイレクト先がサイト内のページ(ページスラッグがmember)なら以下の記述

https://hoge-hoge.com/wp-login.php?redirect_to= member

パラメーター有りはそのページへ、パラメータが無い場合は管理画面へリダイレクトさせる場合
function.phpに以下を記述

function my_login_redirect( $redirect_to, $request ) {
    if ( empty($request)) {
            $redirect_to =  home_url('');
    }
    return $redirect_to;
}

add_filter( 'login_redirect', 'my_login_redirect', 10, 3 );

WordPress uploadsフォルダ内ファイルへの直接アクセス禁止

Filed under: wordpress — kdcs @ 2022年4月11日 月曜日

.htaccessファイルをuploadsフォルダ内に入れてファイル直接アクセスの禁止制限をかける。
サイト内のリンクからのアクセスはOK

.htaccessの記述

SetEnvIf Referer "^https://hogehoge.co.jp" ShowOK
order deny,allow
deny from all
allow from env=ShowOK

特定のPDFファイルのみ禁止
例は、_memberがファイル名に付くPDFファイルのみ禁止
URLはhttpとhttps両方の場合。httpsにリダイレクトさせている場合はhttpsだけでよい

SetEnvIf Referer "^http://hogehoge.com" mysite
SetEnvIf Referer "^https://hogehoge.com" mysite
<Files ~ "_member\.(pdf)$">
order deny,allow
deny from all
allow from env=mysite
</Files>
~ パターンマッチであるという意味です。「=」でないことに注意してください。「~」より右側に記述したルールにマッチしたファイルを適応するということです。
^ ファイル名の先頭であることを指示します。たとえば、 と記述すると、ファイル名のどこかに「access」という文字列が入っていれば、OKとなります。しかし、 と記述すると、ファイル名の先頭が「access」であるファイルのみが適応されます。
$ ファイル名の最後であることを指示します。たとえば、と記述すると、ファイル名の最後が「access」となっているファイルのみが適応されます。したがって、「access.log」のようなファイル名には適用されません。
* ワイルドカードです
? 一文字ワイルドカードです。
\ 「.」「\」「|」「$」のような記号文字は、指示子内では、特別な意味を持ってしまいます。したがって、このような文字を純粋に指定したい場合には、その文字の効果を無効にするために「\」を記述します。たとえば、と記述すると、「$」はファイル名の最後という指示を持った記号ですので、純粋に「access$」というファイル名に適応できません。この場合には、「$」の効果を無効にするために、「\」を前に入れて を記述します。
(foo|bar) 括弧内に、「|」で区切って記述すると、その中に記述された文字列のいづれかという意味となります。この場合には、「foo」もしくは「bar」という意味となります。

1.「SetEnvIf」

[URL]

リファラ(Referer)の条件を正規表現で指定します。

「"^http://www\.example\.jp"」を指定すると、アクセス元URLが「http://www.example.jp」で始まっているを意味します。

[結果]

リファラ(Referer)の条件に該当するときに結果が設定されます。
設定された結果は「許可(allow)」や「拒否(deny)」の判定に利用できます。

2.「order」

許可(allow)と拒否(deny)の判定順を指定します

例えば、「order deny,allow」の場合は、「拒否(deny)」に該当したら「許可(allow)」を判定するするため、「許可(allow)」が優先となります。

「order allow,deny」は、許可(allow)→拒否(deny)の順に判定することで、拒否を設定
「order deny,allow」は、拒否(deny)→許可(allow)の順に判定することで、許可を設定

3.「allow」

許可(allow)の条件を指定します
「allow from all」は、すべて許可を表します

「特定アクセスを拒否」する設定の場合は、「order allow,deny」を指定するため「allow from all」で一旦すべて許可を指定し、その後に拒否(deny)を指定します。

4.「deny」

拒否(deny)の条件を指定します
「deny from all」は、すべて拒否を表します

「特定アクセスを許可」する設定の場合は、「order deny,allow」を指定するため「deny from all」で一旦すべて拒否を指定し、その後に許可(allow)を指定します。

5.結果判定の指定方法

判定する[結果]は、「from」の後に「env=[結果]」で指定します。

「allow from env=[結果]」の場合、リファラ(Referer)の条件に該当する場合は「許可」
「deny from env=[結果]」の場合、リファラ(Referer)の条件に該当する場合は「拒否」

カスタム投稿タイプの個別記事でのカテゴリー分岐

Filed under: wordpress — kdcs @ 2022年4月7日 木曜日

カスタム投稿タイプの個別記事(single-custom.php)テンプレート内でカテゴリー分岐させる方法。
customはカスタム投稿タイプ名
custom-name_categoryはカスタムタクソノミー
xxxはタームのスラッグ

single-custom.php内に記述

<?php if(has_term('xxx','custom_category')&&is_single()): ?>
// 処理
<?php else: ?>

Advanced Custom FieldsのフィールドタイプにTableを追加するプラグイン

Filed under: wordpressプラグイン — kdcs @ 2022年4月6日 水曜日

Advanced Custom FieldsのフィールドタイプにTableを追加するプラグイン「Advanced Custom Fields: Table Field」

出力例

<?php $table = get_field( 'your_table_field_name' );
if ( ! empty ( $table ) ) {
echo '<table border="0">';
  if ( ! empty( $table['caption'] ) ) {
  echo '<caption>' . $table['caption'] . '</caption>';
  }
  if ( ! empty( $table['header'] ) ) {
  echo '<thead>';
    echo '<tr>';
      foreach ( $table['header'] as $th ) {
      echo '<th>';
        echo $th['c'];
        echo '</th>';
      }
      echo '</tr>';
    echo '</thead>';
  }
  echo '<tbody>';
    foreach ( $table['body'] as $tr ) {
    echo '<tr>';
      foreach ( $tr as $td ) {
      echo '<td>';
        echo $td['c'];
        echo '</td>';
      }
      echo '</tr>';
    }
    echo '</tbody>';
  echo '</table>';
}
?>

WordPress 会員サイトでログインユーザー名を表示する

Filed under: wordpress — kdcs @ 2022年3月28日 月曜日

ログインしているユーザーの名前を表示させる方法
先頭に「ようこそ」最後尾に「さん」、ログインしていない状態は「ゲスト」

<div class="userName">ようこそ<?php if(is_user_logged_in()): ?><?php global $current_user; echo $current_user->nickname ?><?php else: ?>ゲスト<?php endif; ?>さん</div>

ユーザー名=user_nicename
ニックネーム=nickname
姓=last_name
名=first_name

サイト内検索

カテゴリー

最近の投稿

↑上に戻る