add_filter ( ) : 何らかの処理に対して自由にフィルターをかける
add_filter (‘存在しているフィルターの名前’, ‘処理をする関数の名前’) ;
apply_filtersとadd_filterを使ってコード管理を楽にする方法 | Fantastech(ファンタステック)
これで、本文にある「バナナ」の文字がすべて「リンゴ」に変わります。
add_filter( ‘the_content’, ‘banana_to_apple’ );
function banana_to_apple( $content ) {
$content = str_replace( ‘バナナ’, ‘リンゴ’, $content );
return $content;
}
add_theme_support : WordPressの特定の機能をテーマで有効にする。
WordPress add_theme_support() で実装される機能 – Qiita
functions.phpに以下を記述することで左図の赤枠部分が管理画面に現れる。
//アイキャッチ画像を使う
add_theme_support( ‘post-thumbnails’ );
//アイキャッチ画像のサイズを設定する
set_post_thumbnail_size( 1568, 9999 );
after_setup_theme :テーマが読み込まれた後
アクションフックやフィルターフックを設定するタイミング。
add_action(‘after_setup_theme’,’sampletheme_setup’)
テーマが読み込まれた後に関数sample_setupを起動する。
●ワードプレスのアクションの実行順
ワードプレスで最も先に実行されるアクションにフック(Action、Hook)するには? | ワードプレスドクター (wp-doctor.jp)
●フィルターフック/アクションフック
WordPressでよく使用するアクションフックとフィルターフックの実例3選 | 東京のWeb制作会社 クーシー(COOSY)
apply_filters: フィルターを適用する
【例1】固定ページの表示
<?php $page_id = 1903; //表示したい固定ページのページID$alternative_post = get_post( $page_id );
// ↑ 投稿格納先の変数にグローバル変数の$postは使わないようにしましょう。
//メインループに置き換えられてしまう可能性があります。
echo apply_filters(‘the_content’, $alternative_post->post_content); //固定ページの内容
?>
【例2】
$content = apply_filters( ‘the_content’, get_the_content() );
このコードは、the_contentというフィルターを通してget_the_content関数の返り値である記事本文を取得しています。
<?php apply_filters( $tag, $value, $var ... ); ?> $tag (文字列) (必須) フィルターフック名。 初期値: なし $value (mixed) (必須) $tag に登録されたフィルター関数が変更できる値。 初期値: なし $var (mixed) (オプション) フィルター関数へ渡す追加の変数(複数指定可)。これは関数の中で使えるが値が返されることはない。バージョン 1.5.1 以降で利用可能。 初期値: なし
die() : プログラムを途中で止める。
[PHP] 関数や処理を途中で抜ける (関数や処理の終了) | iPentec.com
die(終了) → 「終了」と記述し終了。
foreach : 配列の要素をまとめて処理したいときに使う。
PHPでforeach文を使う方法【初心者向け】 | TechAcademyマガジン
<?php
foreach ( <配列の変数> as <各要素が格納される変数> ) {
// ループ処理をここへ記述
}
?>
たとえば $fruits という変数を作り、これを配列にします。
<?php
$fruits = [ “りんご”, “オレンジ”, “ぶどう” ];
foreach ( $fruits as $fruit ) {print $fruit. “<br>”;
}
?>
// 配列要素のキーと値のペアを取り出すとき
foreach (<配列の変数> as <各要素のキーが格納される変数> => <各要素が格納される変数> ) {
// ループ処理をここへ記述
}
同じように $fruits 配列を使いますが、それぞれの要素がキーと値のペアを持っています。
<?php
$fruits = [ “apple” => “りんご” , ”orange” => “オレンジ”, ”grape” => “ぶどう” ];
foreach($fruit as $key => $value){print $value . ”は英語で書くと” . $key . “です<br>”;
}
?>
PHPでforeach文を使う方法【初心者向け】 | TechAcademyマガジン
get_page_by_title : タイトルを指定して固定ページを取得します。
get_page_by_title – WordPress私的マニュアル (elearn.jp)
<?php // 指定の固定ページの本文を抽出
$my_post = get_page_by_title ( 'フロントページ' );
echo apply_filters ( 'the_content', $my_post -> post_content );
?>
get_template_parts() : テンプレートパーツファイルを呼び込む。
【例】excerpt.phpを呼び込む。
while ( have_posts() ) : //ループ開始
the_post();
get_template_part( ‘excerpt’ ); //コンテンツを表示するテンプレートを読み込む
endwhile; //ループ終了
get_the_category_by_ID(37) : カテゴリーのタイトルを取得
指定したカテゴリIDのカテゴリ名のみ取得 | Plus WordPress
<?php echo $cat_name = get_the_category_by_ID(37); ?>
get_the_date( $format, $post ) : 投稿日を取得
WordPress 投稿日の表示方法 – by Takumi Hirashima (hirashimatakumi.com)
投稿日の表示
echo get_the_date(‘Y年n月j日’); 2021年9月4日
echo get_the_date(‘Y年n月j日'(I)); 2021年9月4日(日曜日)
if ( !defined( ‘ABSPATH’ ) ) exit; wp-config.phpまでのパス
「if ( ! defined( ‘ABSPATH’ ) ) exit;」って?【WordPressプラグイン申請】 (taupe.site)
全てのPHPファイルのコードの文頭に上記コードを記述する。
if ~ else : 条件分岐
”=” ではなく ”==”
if($row[‘hyoji’]==“on”){
echo “\t\t<td class=’chart-zhongwen’>{$row[‘zhongwen’]}</td>\n”;
}
else {
echo “\t\t<td class=’chart-zhongwen’> </td>\n”;
}
<input value=”???”>等、phpでのタグ内の変数の入れ方 :
<?php
echo ‘<input type=”hidden” name=”No” value=”‘, $row[‘No’], ‘”>’;
echo ‘<div class=”td0″>’, $row[‘No’], ‘</div> ‘;
echo ‘<div class=”td1″>’;
echo ‘日本語 <input class=”td11″ type=”text” name=”Japanese” size=”65″ value=”‘, $row[‘Japanese’], ‘”>’;
is_active_sidebar() : ダイナミックサイドバーが有効か確認する
is_active_sidebar – WordPress私的マニュアル (elearn.jp)
テーマ内のsidebar.phpで使用することが多いが、ウィジェットの表示でも利用される。
if ( is_active_sidebar( 'footer' ) ) { //ウイジットが設置されているかチェック
dynamic_sidebar( 'footer' );
}
is_home() || is_front_page() : フロントページとその他ページとテンプレートを分ける
WordPressでホーム(トップページ)とそれ以外で表示を変えるとき | StudioBRAIN
index.php 等で以下のコードでテンプレートを使い分ける。
if ( is_home() || is_front_page() ){
get_template_part('tmp/frontpage_content_org');
}
else{
get_template_part('tmp/list');
}
mb_send_mail : phpでメールを送信する
サンプルコード:誰でも実装できる!PHPでメール送信を行う方法【初心者向け】現役エンジニアが解説 | TechAcademyマガジン
解説:PHPでメール送信を行う方法:mb_send_mail() | UX MILK
マニュアル:PHP: mb_send_mail – Manual
mailform.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script type="text/javascript" charset="UTF-8"></script>
</head>
<body>
<p>
<h2>メール送信フォーム</h2>
</p>
<form action="./confirm.php" method="post">
<p>
送信先
</p>
<input type="text" name="to">
<p>
メールのタイトル
</p>
<input type="text" name="title">
<p>
本文
</p>
<textarea name="content" cols="50" rows="5"></textarea>
<p>
<input type="submit" name="send" value="送信">
</p>
</form>
</body>
</html>
confirm.php
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
<?php
mb_language("Japanese");
mb_internal_encoding("UTF-8");
$to = $_POST['to'];
$title = $_POST['title'];
$content = $_POST['content'];
if(mb_send_mail($to, $title, $content)){
echo "メールを送信しました";
} else {
echo "メールの送信に失敗しました";
};
?>
</body>
</html>
mysqli_connect : MySQLサーバーへの接続
mysqli_connect ( string $host, string $username, string $passwd, string $dbname [, int $port [, string $socket ]] ) 引数 $host MySQLサーバーのホスト名を指定します。 $username MySQLのユーザー名を指定します。 $passwd ユーザーの接続するデータベースのユーザー名を指定します。 $dbname 接続するデータベース名を指定します。 $port 接続するMySQLサーバーのポート番号を指定します。 $socket 使用するソケットを指定します。 返り値 MySQLサーバーへの接続オブジェクトを返します。
MySQLサーバーへ接続(手続き型) – mysqli_connect() – PHP入門 – Webkaru
post_class() : クラス属性を出力
print, echo, print_r, var_dump : 各々の違い
【PHP】文字列の出力。echo、print、print_r、var_dumpの違い – みるはぴ.com (miru-happi.com)
php — PHPのecho、print、print_rの違いは何ですか? (it-swarm-ja.com)
$_request[ ] : コントロールのname属性の値がリクエストパラメータ名
PHP リクエストパラメータ $_REQUEST[‘リクエストパラメータ名’] – Qiita
submitされた際に、<input>にてnameで指定された値を格納する。
echo “\t\t<td type=’hidden’ class=’tdNo1′><input class=’main-tdNo’ name=’No‘ value='{$row[‘No’]}’></td>\n”;
$val=$_REQUEST[‘No‘]; echo” 日本語 <input type=’text’ name=’Japanese’ size=’65’ value= {$val} ><br>”;
session_start(): phpの変数データを別のphpに引き継ぐ
詳細POST:session_() – Kawana Lab (xdomain.jp)
セッション(session)をPHPで使うための基本知識を解説!|TECH PLAY Magazine [テックプレイマガジン]
Kawana lab でのzhongwen-mainの例
<form>のsubmitを使用せずにページを遷移する場合、$_REQUESTで変数の値を引き継げない。
session_start()でサーバー内に値を保存する。複数のphpにて共通の変数を使用可能となる。
注意点 : get_header()の後にsession_start()を記述すると以下の警告が出る。(原因未検討)そのためget_header()の前に記述している。
Warning: session_start(): Cannot send session cache limiter – headers already sent
page-zhongwen-rank.php
<?php
$bb=$_REQUEST['rank'];
session_start();
// 有効期限30日
session_cache_expire(60 * 24 * 30);
$_SESSION["rank"] = "$bb";
session_start();
if (isset($_SESSION["rank"])) {
print "<p>";
print "ログインID:".$_SESSION["rank"];
print "</p>";
}
print "session:".$_SESSION["rank"];
echo"<br>";
print "motomoto:".$_REQUEST['motomoto'];
echo '<META http-equiv="Refresh" content="0;URL=http://kawana.php.xdomain.jp/zhongwen-hyoji/">';//1秒後に指定のURLにジャンプする。
?>
the_contents ( ) : テンプレートタグ、現在の投稿の本文を出力
the_contents ( ) : テンプレートタグ、現在の投稿の本文を出力
テンプレートタグ/the content – WordPress Codex 日本語版 (osdn.jp)
the_ID() : 投稿IDを出力
<article id=”post-<?php the_ID(); //投稿IDを表示 ?>” <?php post_class(); //投稿のカテゴリーなどに基づきクラス属性を表示 ?>>
●特定の投稿の見栄えを変更したい場合は、CSSでこのIDを利用する。
the_post_thumbnall( $size, $attr) : アイキャッチ画像を出力
WordPress アイキャッチ画像や添付画像/ Web Design Leaves
wp_enqueue_style : 指定したスタイルシートを指定する。
WordPress CSSやJavaScriptファイルの読み込み/ Web Design Leaves
・page-zhongwen.php 親テーマのstyleに替えて子テーマのcustom-style.cssを指定している。(style.cssでもよい)
・wp_enqueue_scriptsのアクションフックとセットで使用
→これだけでは親テーマのstyleの影響がなくならない。(page^zhongwen-hyoji.php等でget_header()有り無しでcssが変わる。)
<?php add_action( ‘wp_enqueue_scripts’, ‘theme_enqueue_styles’ );
function theme_enqueue_styles() {
wp_enqueue_style( ‘parent-style’, get_parent_theme_file_uri() . ‘/custom-style.css’ );
}
wp_nav_menu : 記述した箇所にメニューを表示する。
メニュータグ wp_nav_menu をカスタマイズしてメガメニューの礎(いしずえ)を築く | WordPressカスタマイズ事例【100ウェブ】 (100webdesign.jp)
functions.phpにregister_nav_menues()による指定が必要。
function sampletheme_setup() {
register_nav_menus(
[
'menu-1' => 'メイン'
]
);
}
add_action( 'after_setup_theme', 'sampletheme_setup' );
<?php
wp_nav_menu( //メニューを表示
[
'theme_location' => 'menu-1',
'menu_class' => 'main-menu',
'link_before' => '●'
]
);
?>
引数の連想配列で指定すると表示に反映される。上記の例では「●」が追加されている。
■メニューリストの縦並びを横並びにする。
CSSに以下を追加
li {
display: inline;}
カテゴリー(ページ)毎に異なるsinglar.phpを使う include()
固有の固定ページ(id:1192)の場合、singular_jogを使用、その他の場合(Lightningの場合、固定ページ、投稿ともsingular.phpを使用)、singular_default.phpを使用するように条件設定する。
子テーマの場合は”STYLESHEETPATH ”、親テーマの場合は”TEMPLATEPATH.”と記述する。
/*singular.php*/
<?php
$post = $wp_query->post;
if ( is_page('1192') ) {
/* カテゴリーID1 */
include(STYLESHEETPATH .'/singular_jog.php');
}
else {
/* それ以外 */
include( STYLESHEETPATH .'/singular_default.php');
}
?>
オリジナルPHP制作の要点 : get_header()が機能しない。style.cssがリンクされていない。
新規 .phpファイルへのリンクの方法
■get_header()が機能しない ■新規作成のphpファイルへのリンクの方法
page-zhongwen-main.phpにて以下の対応で成立
オリジナルphpの冒頭に以下を追加
/*Template Name:Chinese-main*/
phpファイルがテンプレートであることをwordpressに認識させる。
wordpess管理画面の固定ページ設定にて以下を記入
「テンプレート」にphpにて指定したTemplate Nameが表示されるので選択する。
URLスラッグを任意に指定する。
●リンク先を???.phpにしない。
×:echo'<form action=”http://kawana.php.xdomain.jp/wp-content/themes/twentynineteen_child/
page-zhongwen- 2.php” method=”post”>’;
〇:echo'<form action=”http://kawana.php.xdomain.jp/zhongwen-2″ method=”post”>’;
wordpress管理画面の固定ページ設定中でテンプレートとして認識させる必要あり。
【WordPress】オリジナルテーマ作成中にheader.phpをget_headerで読み込めない現象 | (yutaliberty.com)
■style.cssとリンクされない
以下を追加する。
<link rel=”stylesheet” href=”style.css”>
表からの入力によるSQLとのデータ授受(中国語学習P) – Kawana Lab (xdomain.jp)
スラッグを取得する :$slug = $post->post_name;
WordPress スラッグ(slug)を取得 (webdesignleaves.com)
<?php
global $post;
$slug = $post->post_name;
?>
固定ページを投稿と共通のカテゴリーで分類する :
WordPressの固定記事にカテゴリーを設定できるようにする方法 | ソフトウェア開発日記 (lightgauge.net)
function.phpに以下を追加する。
add_action( 'init', 'my_add_pages_categories' ) ;
function my_add_pages_categories()
{
register_taxonomy_for_object_type( 'category', 'page' ) ;
}
add_action( 'pre_get_posts', 'my_set_page_categories' ) ;
function my_set_page_categories( $query )
{
if ( $query->is_category== true && $query->is_main_query()){
$query->set( 'post_type', array( 'post', 'page', 'nav_menu_item' )) ;
}
}
演算子 : ==, =>,= 等
条件式の「==」と「===」の意味と違いの3つのポイント | PLUGMIZE(プラグマイズ)
演算子 | 役割 |
---|---|
== | 等しい |
!= | 等しくない |
> | より多い |
>= | より多いか等しい(以上) |
< | より少ない(未満) |
<= | より少ないか等しい(以下) |
特定の固定ページ、投稿、カテゴリーのリンクを取得 :<?php echo get_page_link(2985); ?>
<?php echo get_page_link(2985); ?>
<?php echo get_category_link(37); ?>
特定の固定ページ、投稿を表示する :
WordPressで「特定の固定ページ」を任意の場所に呼び出す方法 | OKI-Site LABO
<?php
$page_id = 191;//ページIDを指定
$page = get_post($page_id, 'OBJECT', 'raw'); //指定のページIDから情報を取得
$page_include = apply_filters( 'the_content',$page->post_content); //ページの本文をフィルターフックで整形
echo $page_include; //出力
?>