ノウハウをいつでも。ウェブマーケティングのポータルサイト

制作日誌

WordPressユーザー必見!プラグインなしで追加できる機能7つ

このエントリーをはてなブックマークに追加
      
follow us in feedly
友だち追加数
WordPressを使ってサイトを構築する際、なるべくプラグインは使いたくありません。サイトが重くなったりする原因になります。今回はプラグインなしでできることを7つご紹介します。


1. 人気記事

以下のコードではコメント数をもとに人気記事をリスト形式で5件出力します。

 
<ul>
    <?php $result = $wpdb->get_results("SELECT comment_count,ID,post_title 
FROM $wpdb->posts ORDER BY comment_count DESC LIMIT 0 , 3");
    foreach ($result as $post) {
        setup_postdata($post);
        $postid = $post->ID;
        $title = $post->post_title;
        $commentcount = $post->comment_count;
        if ($commentcount != 0) { ?>
 
        <li>
            <h4>
                <a href="<?php echo get_permalink($postid); ?>" title="<?php echo $title ?>">
                    <?php echo $title ?>
                </a>
           </h4>
        </li>
    <?php } } ?>
</ul> 




2. 関連記事

以下は同じタグの記事を「関連記事」として出力するコードです。複数のタグにも対応しています。

 
<?php
    $original_post = $post;
    $tags = wp_get_post_tags($post->ID);
    $tagIDs = array();
    if ($tags) {
        $tagcount = count($tags);
        for ($i = 0; $i < $tagcount; $i++) {
            $tagIDs[$i] = $tags[$i]->term_id;
        }
    $args=array(
    'tag__in' => $tagIDs,
    'post__not_in' => array($post->ID),
    'showposts'=>4,
    'caller_get_posts'=>1
    );
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {
    while ($my_query->have_posts()) : $my_query->the_post(); ?>
        <li>
            <h4>
                <a href="<?php the_permalink();?>" rel="bookmark" title="<?php the_title_attribute(); ?>">
<?php the_title(); ?></a>
            </h4>
        </li>
<?php endwhile; wp_reset_query(); ?>
<?php } else { ?>
    関連する記事は見当たりません...
<?php } } ?> 




3. パンくず

パンくずもプラグインなしでできるんです。以下のコードをfunctions.phpに追記します。

 

function breadcrumb($divOption = array("id" => "breadcrumb", "class" => "breadcrumb inner")){
    global $post;
    $str ='';
    if(!is_home()&&!is_admin()){
        $tagAttribute = '';
        foreach($divOption as $attrName => $attrValue){
            $tagAttribute .= sprintf(' %s="%s"', $attrName, $attrValue);
        }
        $str.= '<div'. $tagAttribute .'>';
        $str.= '<ul>';
        $str.= '<li><a href="'. home_url() .'/">ホーム</a></li>';
 
        if(is_category()) {
            $cat = get_queried_object();
            if($cat -> parent != 0){
                $ancestors = array_reverse(get_ancestors( $cat -> cat_ID, 'category' ));
                foreach($ancestors as $ancestor){
$str.='<li><a href="'. get_category_link($ancestor) .'">'. get_cat_name($ancestor) .'</a></li>';
                }
            }
            $str.='<li>'. $cat -> name . '</li>';
        } elseif(is_single()){
            $categories = get_the_category($post->ID);
            $cat = $categories[0];
            if($cat -> parent != 0){
                $ancestors = array_reverse(get_ancestors( $cat -> cat_ID, 'category' ));
                foreach($ancestors as $ancestor){
                    $str.='<li><a href="'. get_category_link($ancestor).'">'. 
get_cat_name($ancestor). '</a></li>';
                }
            }
            $str.='<li><a href="'. get_category_link($cat -> term_id). '">'. $cat-> cat_name . '</a></li>';
            $str.= '<li>'. $post -> post_title .'</li>';
        } elseif(is_page()){
            if($post -> post_parent != 0 ){
                $ancestors = array_reverse(get_post_ancestors( $post->ID ));
                foreach($ancestors as $ancestor){
                    $str.='<li><a href="'. get_permalink($ancestor).'">'.
 get_the_title($ancestor) .'</a></li>';
                }
            }
            $str.= '<li>'. $post -> post_title .'</li>';
        } elseif(is_date()){
            if(get_query_var('day') != 0){
                $str.='<li><a href="'. get_year_link(get_query_var('year')). '">' 
. get_query_var('year'). '年</a></li>';
                $str.='<li><a href="'. get_month_link(get_query_var('year'), 
get_query_var('monthnum')). '">'
. get_query_var('monthnum') .'月</a></li>';
                $str.='<li>'. get_query_var('day'). '日</li>';
            } elseif(get_query_var('monthnum') != 0){
                $str.='<li><a href="'. get_year_link(get_query_var('year')) .'">'.
 get_query_var('year') .'年</a></li>';
                $str.='<li>'. get_query_var('monthnum'). '月</li>';
            } else {
                $str.='<li>'. get_query_var('year') .'年</li>';
            }
        } elseif(is_search()) {
            $str.='<li>「'. get_search_query() .'」で検索した結果</li>';
        } elseif(is_author()){
            $str .='<li>投稿者 : '. get_the_author_meta('display_name', 
get_query_var('author')).'</li>';
        } elseif(is_tag()){
            $str.='<li>タグ : '. single_tag_title( '' , false ). '</li>';
        } elseif(is_attachment()){
            $str.= '<li>'. $post -> post_title .'</li>';
        } elseif(is_404()){
            $str.='<li>ページがみつかりません。</li>';
        } else{
            $str.='<li>'. wp_title('', true) .'</li>';
        }
        $str.='</ul>';
        $str.='</div>';
    }
    echo $str;
}

あとはパンくずを表示したいところに以下を記述します。

 
<?php breadcrumb(); ?> 



4. アップデート通知非表示

クライアントのサイトでは、管理画面にアップデート通知は出したくありません。以下のコードで管理者以外は非表示にできます。

 
if (!current_user_can('edit_users')) {
  function wphidenag() {
    remove_action( 'admin_notices', 'update_nag');
  }
  add_action('admin_menu','wphidenag');
}




5. 固定ページでビジュアルエディタを使えないようにする

HTMLに慣れている人だと、テキストエディタの方がやりやすいと思います。ビジュアルエディタとテキストを切り替えるとコードが崩れてしまう場合があるので、ビジュアルエディタを使わないなら使えないようにしたほうが良いでしょう。

 
function disable_visual_editor_in_page(){
  global $typenow;
  if( $typenow == 'page' ){
    add_filter('user_can_richedit', 'disable_visual_editor_filter');
  }
}
function disable_visual_editor_filter(){
  return false;
}
add_action( 'load-post.php', 'disable_visual_editor_in_page' );
add_action( 'load-post-new.php', 'disable_visual_editor_in_page' ); 



6. 固定ページでビジュアルエディタを使えないようにする

HTMLに慣れている人だと、テキストエディタの方がやりやすいと思います。ビジュアルエディタとテキストを切り替えるとコードが崩れてしまう場合があるので、ビジュアルエディタを使わないなら使えないようにしたほうが良いでしょう。

 
function disable_visual_editor_in_page(){
  global $typenow;
  if( $typenow == 'page' ){
    add_filter('user_can_richedit', 'disable_visual_editor_filter');
  }
}
function disable_visual_editor_filter(){
  return false;
}
add_action( 'load-post.php', 'disable_visual_editor_in_page' );
add_action( 'load-post-new.php', 'disable_visual_editor_in_page' ); 

7. ユーザー情報の追加&削除

ユーザー情報に新しい項目を追加したり、すでにある項目を削除する方法です。



追加

  
function my_new_contactmethods( $contactmethods ) {
//Twitter
$contactmethods['twitter'] = 'Twitter';
//Facebook
$contactmethods['facebook'] = 'Facebook';
//Google+
$contactmethods['googleplus'] = 'Google+';
return $contactmethods;
}
add_filter('user_contactmethods','my_new_contactmethods',10,1); 

追加項目の表示は以下のコードです。

 
<?php the_author_meta( 'twitter' ); ?>
<?php the_author_meta( 'facebook' ); ?>
<?php the_author_meta( 'googleplus' ); ?> 



削除

 
function hide_profile_fields( $contactmethods ) {
  unset($contactmethods['aim']);
  unset($contactmethods['jabber']);
  unset($contactmethods['yim']);
  return $contactmethods;
}
add_filter('user_contactmethods','hide_profile_fields'); 

AIM、Yahoo IM、Jabberなどは管理画面のユーザープロフィールにデフォルトで入っていますが、不要の場合上記のコードで消すことができます。



さいごに

今回は自分が普段良く使うコードを備忘録も兼ねてご紹介しました。なるべくプラグイン無しで実装していきたいという方はぜひ参考にしてくださいね!

© MAKEPO

 
このエントリーをはてなブックマークに追加
   
follow us in feedly
友だち追加数

著者情報

ノビタ

のび太

Web制作会社「NOBITA」の社長をやっております、のび太と申します。大学卒業後、お金を貯めカナダに留学。バンクーバーのビジネス学校で好きな人に出会ってしまったため、日本に帰らず現地企業に就職。未経験ながらWeb制作、メディア運営、ライター業などの仕事に奮闘する。帰国後、フリーランスのWebデザイナーとして独立し、2014年5月、自身の会社を設立。「伸びていくWebサイトをお届けする!」がモットー。 ブログ:がんばれ!のび太!

他の参加者を見る

のび太

関連記事

マーケティングノウハウ足りてますか?

MAKEPOのメルマガ…購読してみませんか?
直近のピックアップ記事のほか、セミナー・ツール活用情報など不定期でお伝えしています。「サイトにアクセスするのは面倒だ!」「電車の中でざっくり読みたい」という方は是非ご登録ください。 リアルタイムで情報取得をしたい方は、RSSまたは公式Twitterをフォローしてご覧ください!

通勤中の情報収集に!

メルマガ登録

いますぐ新着情報を知るなら

LINE@で友だちに追加!