【WordPress】フロント

# javascriptを呼び出す

__概要__

javascriptを呼び出す

__施策__


```php
/*--------------------------------------------------------
// javascript 呼び出す
--------------------------------------------------------*/

$conditional_scripts = array();
$conditional_scripts['jquery-min'] = get_template_directory_uri() . '/js/jquery.min.js';
$conditional_scripts['html5shiv'] = get_template_directory_uri() . '/js/html5.js';

if(!is_admin()){
	foreach ( $conditional_scripts as $handle => $src ) {
		wp_enqueue_script( $handle, $src, array(), date('Ymd'), false );
	}
}

add_filter( 'script_loader_tag', function( $tag, $handle ) use ( $conditional_scripts ) {
	if ( array_key_exists( $handle, $conditional_scripts ) ) {
		if($handle=='html5shiv'):
			$tag = "<!--[if lt IE 9]>$tag<![endif]-->" ."\n";
		endif;
	}
	return $tag;
}, 10, 2 );
```

---

# スタイルシートを呼び出す

__概要__

スタイルシートを呼び出す

__施策__

```php
/*--------------------------------------------------------
// style sheet 呼び出す
--------------------------------------------------------*/
$conditional_styles = array();
$conditional_styles['style'] = get_template_directory_uri() . '/css/style.css';
$conditional_styles['print'] = get_template_directory_uri() . '/css/print.css';
$conditional_styles['ie8'] = get_template_directory_uri() . '/css/ie8.css';

if(!is_admin()){
	foreach ( $conditional_styles as $handle => $src ) {
		if($handle=='print'){
			wp_enqueue_style( $handle, $src, array(), date('Ymd'), 'print' );
		}else{
			wp_enqueue_style( $handle, $src, array(), date('Ymd'), false );
		}
	}
}
add_filter( 'style_loader_tag', function( $tag, $handle ) use ( $conditional_styles ) {
	if ( array_key_exists( $handle, $conditional_styles ) ) {
		if($handle=='ie8'):
			$tag = "<!--[if lt IE 9]>$tag<![endif]-->" ."\n";
		endif;
	}
	return $tag;
}, 10, 2 );
```

---

# wp_headの余分なもの削除

__概要__

wp_headの余分なもの削除

__施策__


```php
/*-------------------------------------------------------
wp_head　の余分なもの削除
--------------------------------------------------------*/
remove_action('wp_head', 'wp_generator');
remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'wlwmanifest_link');
remove_action('wp_head', 'wp_shortlink_wp_head');
remove_action('wp_head', 'adjacent_posts_rel_link_wp_head');

remove_action( 'wp_head', 'feed_links', 2 ); //サイト全体のフィード
remove_action( 'wp_head', 'feed_links_extra', 3 ); //その他のフィード

function remove_recent_comments_style() {
	global $wp_widget_factory;
	remove_action('wp_head', array($wp_widget_factory->widgets['WP_Widget_Recent_Comments'], 'recent_comments_style'));
}
add_action('widgets_init', 'remove_recent_comments_style');

add_filter( 'edit_comment_link', '__return_false');///コメントリンク削除
add_filter( 'edit_post_link', '__return_false');///編集リンク削除
```

---

# 特定のURLからのリダイレクト

__施策__

```php
//--------------------------------------------------------
// 特定のURLからのリダイレクト
//--------------------------------------------------------
function author_archive_redirect() {

	$url = $_SERVER["REQUEST_URI"];
	preg_match('(/category/([0-9]+).html?$)',$url,$match);
	if($match){
		$id = $match[1];
		wp_redirect( home_url('/category/' . $id . '/') ,301);
		exit;
	}

}
add_action('init', 'author_archive_redirect');
```

---

# 標準のJQuery削除

```php
///WordPress標準のJQuery削除
wp_deregister_script('jquery');
```

---

# 絵文字表示用スクリプト、スタイルシート削除

__概要__

絵文字表示用スクリプト、スタイルシート削除

__施策__

```php
///絵文字表示用
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'wp_print_styles', 'print_emoji_styles', 10 );
```

---

# embed: 埋め込み機能を無効にする

__概要__

embed: 埋め込み機能を無効にする

__施策__

```php
// embed: 埋め込み機能を無効にする
function my_disable_wp_oembed(){
  remove_action('wp_head','rest_output_link_wp_head');
  remove_action('wp_head','wp_oembed_add_discovery_links');
  remove_action('wp_head','wp_oembed_add_host_js');
}
add_action('init', 'my_disable_wp_oembed', 9999);
```

---

# DNS プリフェッチを非表示にする

__概要__

DNS プリフェッチを非表示にする

__施策__

```php
function remove_dns_prefetch( $hints, $relation_type ) {
	if ( 'dns-prefetch' === $relation_type ) {
		return array_diff( wp_dependencies_unique_hosts(), $hints );
	}
	return $hints;
}
add_filter( 'wp_resource_hints', 'remove_dns_prefetch', 10, 2 );
```

---

# 記事内のはじめのテキストをn文字取り出す

__概要__

記事内のはじめのテキストをn文字取り出す

__施策__

```php
/*--------------------------------------------------------
記事内のはじめのテキストをn文字取り出す
--------------------------------------------------------*/
function catch_that_text($n) {
	global $post;
	$first_text = '';
	ob_start();
	ob_end_clean();

	$first_text = mb_substr( str_replace(array("\r\n","\r","\n"), '', strip_tags( $post->post_content ) ) , 0, $n,"utf-8");
	if(strlen($first_text)>=$n){
		$first_text = $first_text . '...See More';
	}
	return $first_text;
}
```

---

# タイトルタグ カスタマイズ

__概要__

タイトルタグ（&lt;title&gt;）の内容を変更する

__施策__


```php
/*--------------------------------------------------------
// タイトルタグ カスタマイズ
--------------------------------------------------------*/
function mypace_custom_title( $title, $sep ){

  if( is_tax('list') || is_tax('product_use') || is_tax('product_alp') || is_tax('faq_cat') ){
    $chars = preg_split('/｜/', $title, -1, PREG_SPLIT_NO_EMPTY);
    unset($chars[1]);
    $title = implode('｜', $chars);

    if(is_tax('faq_cat')){
      $title = 'よくあるご質問 ' . $title;
    }else{
      $title = '製品一覧 ' . $title;
    }
  }

  return $title;
}
add_filter( 'wp_title', 'mypace_custom_title', 10, 2 ); //フィルターフックで処理を上書き
```

---

# 画像のURLからattachemnt_idを取得する

__概要__

画像のURLからattachemnt_idを取得する

__施策__

```php
//-------------------------------------------------------
//画像のURLからattachemnt_idを取得する
//--------------------------------------------------------
function get_attachment_id($attachment_url)
{
	global $wpdb;
	$attachment_id = false;

// If there is no url, return.
	if ( '' == $attachment_url )
		return;

// Get the upload directory paths
	$upload_dir_paths = wp_upload_dir();

// Make sure the upload path base directory exists in the attachment URL, to verify that we're working with a media library image
	if ( false !== strpos( $attachment_url, $upload_dir_paths['baseurl'] ) ) {

		// If this is the URL of an auto-generated thumbnail, get the URL of the original image
		$attachment_url = preg_replace( '/-\d+x\d+(?=\.(jpg|jpeg|png|gif)$)/i', '', $attachment_url );

		// Remove the upload path base directory from the attachment URL
		$attachment_url = str_replace( $upload_dir_paths['baseurl'] . '/', '', $attachment_url );

		// Finally, run a custom database query to get the attachment ID from the modified attachment URL
		$attachment_id = $wpdb->get_var( $wpdb->prepare( "SELECT wposts.ID FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta WHERE wposts.ID = wpostmeta.post_id AND wpostmeta.meta_key = '_wp_attached_file' AND wpostmeta.meta_value = '%s' AND wposts.post_type = 'attachment'", $attachment_url ) );

	}

	return $attachment_id;


}
```

---

# メンテナンス画面の表示

__概要__

メンテナンス画面の表示

__施策__

> ログイン中は表示されません。

```php
function maintenance_mode() {
	if ( !current_user_can( 'edit_themes' ) || !is_user_logged_in() ) {
		wp_die('ただいまメンテナンス中です。');
	}
}
add_action('get_header', 'maintenance_mode');
```

__関連リンク__

[is_user_logged_in](http://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/is_user_logged_in)

[wp_die](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/wp_die)