All in One SEO でカスタム投稿詳細の<title>タグが正常に出力されない
カスタム投稿の詳細記事でアーカイブのタイトルが自動生成されてしまう問題が発生したので、
強制的に以下のような対応をした。
functions.php で
カスタム投稿が special の場合
//titleタグをオフ add_filter( 'aioseo_disable_title_rewrites', 'aioseo_disable_term_title_rewrites' ); function aioseo_disable_term_title_rewrites( $disabled ) { if ( is_singular('special') ) { return true; } return false; }
header.php で独自に
All in One SEO でタイトルを書き換えている場合は、All in One SEO のタイトルを取得して表示する
<?php if ( is_singular('special') ) { $my_title = get_post_custom()['_aioseo_title'][0]; if($my_title=='') { ?> <title><?php the_title() ?> | <?php bloginfo ( 'name' ); ?></title> <?php } else { ?> <title><?php echo $my_title ?></title> <?php } } ?>
参考サイト
カスタムウォーカーを使用して、カスタムメニューのsub-menuをdivで囲む
function.php
class custom_walker_nav_menu extends Walker_Nav_Menu { function start_lvl(&$output, $depth = 0, $args = array()) { $output .= '<div class="nav-child"><ul class="nav-child-ul">'; } function end_lvl(&$output, $depth = 0, $args = array()) { $output .= '</ul></div>'; } }
カスタムメニューの階層 ul要素(.sub-menu) に独自のClass名を付けたい【カスタムウォーカークラス】
デフォルトでは子要素、孫要素の場合もすべて sub-menu となる。
カスタムウォーカークラスを使用して独自のClass付けを行う。
functions.php
class My_Walker_Nav_Menu extends Walker_Nav_Menu { function start_lvl( &$output, $depth = 0, $args = array() ) { $indent = str_repeat("\t", $depth); $submenu = ( $depth > 0 ) ? 'sub-menu' : ''; $output .= "\n$indent<ul class=\"menu-item__level sub-menu depth-$depth\">\n"; } }
header.php など
表示したいメニューに「''walker' => new My_Walker_Nav_Menu(),」を追加する
wp_nav_menu( array( 'theme_location'=> 'メニュー名', ''walker' => new My_Walker_Nav_Menu(), ));
【youtube】スマホでも自動再生&ループをさせる
HTML
<div class="main-title-wrap"></div>
jQuery
var tag = document.createElement('script'); tag.src = "https://www.youtube.com/iframe_api"; var firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); //iframeタグとプレイヤーを作成します var player; function onYouTubeIframeAPIReady() { player = new YT.Player('js-main-movie', { //js-main-movieはHTMLのid属性の値と同じ videoId: '2BkyGrx2F48', //YouTubeの動画ID height: '1080', width: '1920', playerVars: { controls: 1, autoplay: 1, disablekb:1, enablejsapi: 1, iv_load_policy: 3, playsinline: 1, rel: 0, autohide:0, }, events: { 'onReady': onPlayerReady, 'onStateChange': onPlayerStateChange } }); } //YouTube APIは↓の関数を呼び出す function onPlayerReady(event) { event.target.mute(); event.target.playVideo(); } //プレイヤーの状態が変化するとYouTube APIは↓の関数を呼び出します //プレイヤーが終了するとまた動画の再生をします function onPlayerStateChange(event) { var ytStatus = event.target.getPlayerState(); if (ytStatus == YT.PlayerState.ENDED) { player.mute(); player.playVideo(); } }