워드프레스 Function.php 에 유용한 기능을 넣어보자

워드프레스의 모든 테마에는 function.php을 이용해서 각종 유용한 기능들을 포함한다.

이 파일은 테마 내에서 플러그인처럼 자동으로 작동하게 되는데, 워드프레스의 코어 파일을 편집할 필요없이 자신이 필요한 기능을 자유롭게 개발하여 추가할 수 있다.

이 포스팅은 워드프레스의 function.php에 추가하여 유용하게 사용할 수 있는 Trick에 대해 작성한 글이다.

참고 : 이 문서는 워드 프레스 테마 개발자를 대상으로하며 PHP 지식이 필요하다.

1. 구글 분석 코드 넣기

간단하게 아래의 코드를 function.php 파일에 붙여넣고, 코드 내에 구글 웹 로그 분석 스크립트를 삽입하면 끝.

모든 페이지의 wp_footer 문자열이 있는 소스에 자동으로 입력한 코드를 삽입하게 된다.

// 구글 분석 코드를 여기에 기입

2. 워드프레스 버전 제거하기

워드프레스는 오픈소스다보니, 다양한 취약점이 번번히 생기기 마련이다. 그래서, 항상 워드프레스를 최신버전으로 업데이트를 해야한다.

자신의 블로그의 소스를 보면, 자신의 워드프레스 버전이 표시가 되는데 이 부분을 삭제하여 조금이라도 안전하게 할 수 있지 않을까?

플러그인을 찾는다면 →  https://wordpress.org/plugins/better-delete-revision/

function wp_remove_version() {
return '';
}
add_filter('the_generator', 'wp_remove_version');
function remove_cssjs_ver( $src ) {
    if( strpos( $src, '?ver=' ) || strpos( $src, '&ver=' ) )
        $src = remove_query_arg( 'ver', $src );
    return $src;
}
add_filter( 'style_loader_src', 'remove_cssjs_ver', 10, 2 );
add_filter('script_loader_src', 'remove_cssjs_ver', 10, 2 );

3. 워드프레스 검색기능 차단하기

function fb_filter_query( $query, $error = true ) {

if ( is_search() ) {
$query->is_search = false;
$query->query_vars[s] = false;
$query->query[s] = false;

// to error
if ( $error == true )
$query->is_404 = true;
}
}

add_action( 'parse_query', 'fb_filter_query' );
add_filter( 'get_search_form', create_function( '$a', "return null;" ) );

4. 워드프레스 이미지 퀄리티 수정

워드프레스를 사용하는 대부분의 사람들이 개인 웹 호스팅을 이용하는 사람이 많다고 생각한다.

개인 웹 호스팅에서 용량과 트래픽을 줄이기 위해, 블로그에 게재하는 이미지에 대하여 퀄리티를 수정하는 방법을 사용하는 법에 대한 코드이다.

add_filter( 'jpeg_quality', 'wp_jpeg_quality' );
function wp_jpeg_quality() {
   return 80; // 80을 자신의 원하는 %로 수정하면 된다.
}

5. 댓글의 HTML 기능을 제거

워드프레스의 댓글 부분은 기본적인 HTML 태그를 사용할 수 있도록 만들어져 있다. 또한, 하이퍼 링크를 사용하여 링크를 남길 수 있다.

만약 워드프레스 댓글에 HTML를 비허용하고자 하는 경우 다음 코드를 추가하면 된다.

add_filter( 'pre_comment_content', 'wp_specialchars' );

비허용하는 경우, 테마 댓글 부분도 수정해야할 듯 싶다. 대부분의 기본 무료테마에는 댓글에 사용가능한 HTML 태그가 적혀있기 때문

+ 16.06.18 (토) 에 추가된 내용입니다.

6. 소스코드의 표시되는 Yoast 제거하기

Yoats SEO 플러그인을 사용하면, 소스코드에 다음과 같은 라인이 추가가 되는 것을 알 수 있다.

<!– This site is opti­mized with the Yoast Word­Press SEO plugin –>

신경 쓰이는 이 부분을 제거하려면 다음 코드를 추가하면 된다.

// Remove All Yoast HTML Comments
if (defined('WPSEO_VERSION')){
 add_action('get_header',function (){ ob_start(function ($o){
 return preg_replace('/\n?<.*?yoast.*?>/mi','',$o); }); });
 add_action('wp_head',function (){ ob_end_flush(); }, 999);
}

+ 아래부터 17.08.07 (월) 에 추가된 내용입니다.

7. emojicon 제거

function disable_wp_emojicons() {
// all actions related to emojis
   remove_action( 'admin_print_styles', 'print_emoji_styles' );
   remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
   remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
   remove_action( 'wp_print_styles', 'print_emoji_styles' );
   remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
   remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
   remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
// filter to remove TinyMCE emojis
}
add_action( 'init', 'disable_wp_emojicons' );

8. Meta 제거

//Remove All Meta Generators
function remove_meta_generators($html) {
     $pattern = '/<meta name(.*)=(.*)"generator"(.*)>/i';
     $html = preg_replace($pattern, '', $html);
     return $html;
}

function remove_meta_generators2($html) {
	$pattern = '/<meta name(.*)=(.*)"SKYPE_TOOLBAR"(.*)>/i';
	$html = preg_replace($pattern, '', $html);
	return $html;
}

function clean_meta_generators($html) {
	ob_start('remove_meta_generators');
	ob_start('remove_meta_generators2');
  }
add_action('get_header', 'clean_meta_generators', 100);
add_action('wp_footer', function(){ ob_end_flush(); }, 100);

9. Google Jquery CDN 사용

// google jquery CDN caching
function wpfme_jquery_enqueue() {
	wp_deregister_script('jquery');
	wp_register_script('jquery', "http" . ($_SERVER['SERVER_PORT'] == 443 ? "s" : "") . "://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js", false, null);
	wp_enqueue_script('jquery');
}
if (!is_admin()) add_action("wp_enqueue_scripts", "wpfme_jquery_enqueue", 11);
You've successfully subscribed to taking
Great! Next, complete checkout to get full access to all premium content.
Error! Could not sign up. invalid link.
Welcome back! You've successfully signed in.
Error! Could not sign in. Please try again.
Success! Your account is fully activated, you now have access to all content.
Error! Stripe checkout failed.
Success! Your billing info is updated.
Error! Billing info update failed.