[WordPress] functions.phpを編集、修正、管理しやすくする書き方
http://millkeyweb.com/wp-functions-management/
まずこちらを参考にファンクションを整理
require_once locate_template('func/init.php'); // 初期設定の関数
require_once locate_template('func/cleanup.php'); // 不要なモノを削除する関数
require_once locate_template('func/titles.php'); // タイトル出力の関数
require_once locate_template('func/breadcrumbs.php'); // パンくずリストの関数
require_once locate_template('func/scripts.php'); // CSSやJavascript関連の関数
require_once locate_template('func/ads.php'); // 広告関連の関数
require_once locate_template('func/widgets.php'); // サイドバー、ウィジェットの関数
require_once locate_template('func/custom.php'); // その他カスタマイズの関数
require_once locate_template('func/plugin.php'); // プラグインの関数
require_once locate_template('func/d_header/disp.php'); // プラグインの関数
こんな感じでなにも入れない ちょくは
フォルダfuncにそれそれ作って 入れる
メタをファンクションで
meta descriptionを設定(プラグインなし版)
http://easyramble.com/wordpress-meta-description.html 参考
ベース
// get meta description from the content
function get_meta_description() {
global $post;
$description = "";
if ( is_home() ) {
// ホームでは、ブログの説明文を取得
$description = get_bloginfo( 'description' );
}
elseif ( is_category() ) {
// カテゴリーページでは、カテゴリーの説明文を取得
$description = category_description();
}
elseif ( is_single() ) {
if ($post->post_excerpt) {
// 記事ページでは、記事本文から抜粋を取得
$description = $post->post_excerpt;
} else {
// post_excerpt で取れない時は、自力で記事の冒頭100文字を抜粋して取得
$description = strip_tags($post->post_content);
$description = str_replace("\n", "", $description);
$description = str_replace("\r", "", $description);
$description = mb_substr($description, 0, 100) . "...";
}
} else {
;
}
return $description;
}
// echo meta description tag
function echo_meta_description_tag() {
if ( is_home() || is_category() || is_single() ) {
echo '<meta name="description" content="' . get_meta_description() . '" />' . "\n";
}
}
屁だー
<?php echo_meta_description_tag(); ?>
自己
まず覚え発見
$disp = single_term_title( '' , false );//falseで出力せん
ドルに収納するときは
. ピリオドで繋げれる事
例
$description = $disp . $disp_base . $disp_page;
$description = $disp .' | '. $disp_base . $disp_page;
ページ数は
get_query_var('paged')
でとれるから
1ページ目は0がかえるから
そいつを覗いてページをいれる
$disp_page_no = get_query_var('paged') ;
if($disp_page_no !== 0)
{
$disp_page = ' | '.$disp_page_no . 'ページ目';
}
あとこの違い
$disp = get_the_author_meta( nickname, $author );//the_author_meta() は出力
カスタムポストタイプの場合 ラベルの単数系を使うことでメニューと混合しん
get post typeは戻り値がスラッグだで
get post type objectの中に入れてやることで投稿タイプの情報がとれる
<?php get_post_type_object( $post_type ); ?>
つまりラベルをとるには
<?php echo esc_html( get_post_type_object( get_post_type() )->labels->singular_name ); ?>
https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_post_type_object 参考
タームがかぶる件は カテゴリは:カテゴリ タグは:タグ タクソノミーは:
同じ記事タイトルの件
ブログシングルでよくあった件だが 今回の設定ではディスプはコンテンツが入っているので 必要ない
タイトル+ベース文の場合おこる重複
※タイトルでは使う
//タイトルが同じ記事の場合-2とかスラッグにつくが、the_title wp_titleにはつかないのでディスプリクション・タイトルが重複するのを防ぐ
if (is_single() || is_page()){//シングルなら
$dd_title = urldecode ($slug_name = $post->post_name);// スラッグをデコードして取得
//echo $dd_title;
$keywords = preg_split("/[-]+/", $dd_title);//phpスプリット - にて
//print_r($keywords);
$last = end($keywords); //配列の最後を取得する ほにゃらら-2 ▶ $keywords[0]がほにゃらら $keywords[1]が2
//echo $last;
if (ctype_digit($last)) {//ケツが数字ならの分岐
}
}
//カスタムポストでは常時カスタムする ラベルの単数系を使うことでメニューと混合しん
//サンプル
elseif ( is_singular('sample') ) {
if (ctype_digit($last)) {//ケツが数字なら つまりタイトルが重複しているなら
$title_no = '-'.$last; }//-数字を装弾
$disp = get_the_title() . $title_no;
$d_post_type_label = ' | '.get_post_type_object( get_post_type() )->labels->singular_name;//ラベルを取得
$description = $disp . $d_post_type_label .' | '. $disp_base;
結果
<?
// get meta description from the content
function get_meta_description() {
global $post;
$description = "";
//タイトルが同じ記事の場合-2とかスラッグにつくが、the_title wp_titleにはつかないのでディスプリクション・タイトルが重複するのを防ぐ
if (is_single() || is_page()){//シングルなら
$dd_title = urldecode ($slug_name = $post->post_name);// スラッグをデコードして取得
//echo $dd_title;
$keywords = preg_split("/[-]+/", $dd_title);//phpスプリット - にて
//print_r($keywords);
$last = end($keywords); //配列の最後を取得する ほにゃらら-2 ▶ $keywords[0]がほにゃらら $keywords[1]が2
//echo $last;
if (ctype_digit($last)) {//ケツが数字ならの分岐
}
}
$disp_page_no = get_query_var('paged') ;//ページナンバーを取得
if($disp_page_no !== 0)
{ $disp_page = ' | '.$disp_page_no . 'ページ目'; }//2ページ目以降装弾
$disp_base = '春日井市で外構エクステリア工事(カーポート、ウッドデッキ、テラス、サンルーム、玄関、駐車場の工事など)なら春日井市神屋町にあるクリエイト福海へ!地域密着店ですので、些細な事もお気軽にご相談ください。愛知県全域御対応!見積り無料!';
// ホームでは、基本文
if ( is_home() ) {
$description = $disp_base
//get_bloginfo( 'description' )
;}
///////------------------------アーカイブ------------------------ ///////
//カテゴリではターム名 + 基本文
elseif ( is_category() ) {
$disp = single_cat_title( '' , false );//falseで出力せん //single_term_titleでも同じ
$description = $disp .' | カテゴリー' . $disp_page .' | '. $disp_base;
//$description = category_description();
}
//タクソノミーではターム名 + 基本文
elseif ( is_tax() ) {
$my_tax = get_taxonomy( get_query_var( 'taxonomy' ));//タクソノミー情報を取得して
$my_tax_label =' | '. $my_tax->labels->singular_name; //わかりやすくシングルラベルを使う
$disp = single_term_title( '' , false );
$description = $disp . $my_tax_label . $disp_page.' | '. $disp_base;
}
//タグではタグ名 + 基本文
elseif ( is_tag() ) {
$disp = single_term_title( '' , false );
$description = $disp .' | タグ' . $disp_page .' | '. $disp_base;
}
//月アーカイブでは年月 + 基本文
elseif ( is_month() ) {
$disp = get_query_var('year') . '年' . get_query_var('monthnum') . '月の記事';
$description = $disp . $disp_page .' | '. $disp_base;
}
//オーサーアーカイブではオーサー名 + 基本文
elseif ( is_author() ) {
$disp = get_the_author_meta( nickname, $author );//the_author_meta() は出力
$description = $disp . ' さんの投稿 |' . $disp_page . $disp_base;
}
//ポストタイプアーカイブ カスタムポストのアーカイブ
elseif(is_post_type_archive( 'sample' )){
//あれば
}
//ただのアーカイブ カテゴリー、タグ、投稿者または日時のいずれかに基づいて投稿を集めたページ
//elseif(is_archive()){
// }
///////------------------------ページ------------------------ ///////
//個ページではページタイトル + 基本文
elseif ( is_page() ) {
$disp = get_the_title();//
$description = $disp . $disp_page .' | '. $disp_base;
}
///////------------------------シングル------------------------ ///////
//ブログシングル
elseif ( is_single() ) {
//記事本文から抜粋を取得
if ($post->post_excerpt) {
$description = $post->post_excerpt;
// post_excerpt で取れない時は、自力で記事の冒頭100文字を抜粋して取得
} else {
$description = strip_tags($post->post_content);
$description = str_replace("\n", "", $description);
$description = str_replace("\r", "", $description);
$description = mb_substr($description, 0, 100) . "...";
}
}
///////////////////////////ここからカスタム投稿タイプ それぞれ違うから注意!///////////////////////////////
//カスタムポストでは常時カスタムする ラベルの単数系を使うことでメニューと混合しん
//サンプル
elseif ( is_singular('sample') ) {
if (ctype_digit($last)) {//ケツが数字なら つまりタイトルが重複しているなら
$title_no = '-'.$last; }//-数字を装弾
$disp = get_the_title() . $title_no;
$d_post_type_label = ' | '.get_post_type_object( get_post_type() )->labels->singular_name;//ラベルを取得
$description = $disp . $d_post_type_label .' | '. $disp_base;
}
////////春日井ナビ ショップ
elseif ( is_singular('shop') ) {
if($post-> お店からメッセージ見出し):
$disp = str_replace(array("\r\n","\r","\n"), '', mb_substr(get_post_meta($post->ID,"お店からメッセージ見出し",true), 0, 120)) . str_replace(array("\r\n","\r","\n"), '', mb_substr(get_post_meta($post->ID,"お店からメッセージ",true), 0, 120));
else: if($post-> 店舗紹介文){$disp = mb_substr(post_custom('店舗紹介文'), 0, 120);}
endif;
//if (ctype_digit($last)) {//ケツが数字なら つまりタイトルが重複しているなら
//$title_no = '-'.$last; }//-数字を装弾
$disp_t = get_the_title() . ' | ';
$disp_site = ' | 春日井ナビ';
// $d_post_type_label = ' | '.get_post_type_object( get_post_type() )->labels->singular_name;//ラベルを取得
$description = $disp_t . $disp . $disp_site;
}
else {
;
}
return $description;
}
// echo meta description tag
function echo_meta_description_tag() {
//if ( is_home() || is_category() || is_single() ) {
echo '<meta name="description" content="' . get_meta_description() . '" />' . "\n";
//}
}
?>