[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"; //} } ?>