WordPressプラグイン wp-sabo-basic を作ってみた

カテゴリー: スニペット,

WordPressプラグイン。基本的な機能を集約する用。記載するとテーマ変更&テストやリニューアルの際に、functinos.php のみに記載しておくと困る事柄などはプラグイン化しておく用途。たまに追加・修正されます。

<?php
/*
Plugin Name: WP Sabo Basic
Plugin URI: https://saboten24.net/
Description: 自分がほぼ100%使うであろうものだけを集約しています
Author: Saboten
Version: 0.2
Author URI: https://saboten24.net/
*/

/*
* var_dump の出力結果を highlight.js でシンタックスハイライト
* 最新版確認は https://cdnjs.com/libraries/highlight.js/
*/
function var_dump2($var) {
    echo '<pre class="php" style="white-space:pre; font-family: monospace; font-size:12px; border:3px double #BED8E0;margin:8px;"><code>';
    var_dump($var);
    echo '</code></pre>';
    echo '<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.10/styles/default.min.css"/>';
    echo '<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.10/highlight.min.js"></script>';
    echo '<script>hljs.initHighlightingOnLoad();</script>';
}


/*
* ユーザエージェントによるmobile判定。mobble使ったほうがいいかもしれない
*/
function is_mobile() {
    $http_ua = $_SERVER['HTTP_USER_AGENT'];
    if ( empty($http_ua) ) {
        return false;
    } else {
        $useragents = array(
        'iPhone',
        'iPod',
        'Android.*Mobile',
        'Windows.*Phone',
        'dream',
        'CUPCAKE',
        'blackberry9500',
        'blackberry9530',
        'blackberry9520',
        'blackberry9550',
        'blackberry9800',
        'webOS',
        'incognito',
        'webmate',
        'Silk',
        'Opera Mini',
        'Opera Mobi',
        'Googlebot-Mobile'
        );
        $pattern = '/'.implode('|', $useragents).'/i';
        return preg_match($pattern, $http_ua);
    }
}


/**
 * 管理バーの項目を削除
 * http://wpcj.net/260
 */
function remove_bar_menus( $wp_admin_bar ) {
    $wp_admin_bar->remove_menu( 'wp-logo' );      // ロゴ
    $wp_admin_bar->remove_menu( 'customize' );    // サイト名 -> カスタマイズ (公開側)
    $wp_admin_bar->remove_menu( 'comments' );     // コメント
}
add_action('admin_bar_menu', 'remove_bar_menus', 201);


/**
 * ダッシュボードウィジェットを削除
 * http://wpcj.net/895
 */
function remove_dashboard_widget() {
    remove_meta_box( 'dashboard_quick_press', 'dashboard', 'side' ); // クイックドラフト
    remove_meta_box( 'dashboard_primary', 'dashboard', 'side' ); // WordPressニュース
}
add_action('wp_dashboard_setup', 'remove_dashboard_widget' );


/*
 * 管理画面にCSS,JSを追加
 * http://kwski.net/wordpress/975/
 *
 */
function wp_custom_admin_page() {
    // テーマフォルダにする場合はこっち
    // $siteurl = get_settings('siteurl');
    // $css_url = $siteurl . '/wp-content/themes/sabo24/style-admin.css';
    // $js_url  = $siteurl . '/wp-content/themes/sabo24/js-admin.js';
    $plugin_dir = plugins_url( '', __FILE__ ).'/';
    $css_url = $plugin_dir . 'style-admin.css';
    $js_url  = $plugin_dir . 'js-admin.js';
    wp_enqueue_style( 'my_admin_style', $css_url );
    wp_enqueue_script( 'my_admin_script', $js_url, '', '', true);
}
add_action( 'admin_head', 'wp_custom_admin_page', 100);



/*
 * YouTube埋め込みをレスポンシブ対応
 * https://parashuto.com/rriver/development/customizing-wordpress-oembed-youtube-html-code
 */
function custom_youtube_oembed($code){
  if(strpos($code, 'youtu.be') !== false || strpos($code, 'youtube.com') !== false){
    $html = preg_replace("@src=(['\"])?([^'\">\s]*)@", "src=$1$2&showinfo=0&rel=0", $code);
    $html = preg_replace('/ width="\d+"/', '', $html);
    $html = preg_replace('/ height="\d+"/', '', $html);
    $html = '<div class="youtube">' . $html . '</div>';

    return $html;
  }
  return $code;
}

add_filter('embed_handler_html', 'custom_youtube_oembed');
add_filter('embed_oembed_html', 'custom_youtube_oembed');



/*
 * 特定キーワードを含む検索クエリは即中止
 *
 */
function my_search_filter( $query ) {
    if(strpos($query->query_vars['s'],'eval') !== false){
        wp_die('禁止キーワード「eval」を含んでいるため中止されました');
    }
}

add_action( 'pre_get_posts','my_search_filter',1 );



/*
 * author.php 投稿者アーカイブ非表示
 * https://www.webdesignleaves.com/pr/wp/wp_user_enumeration.html
 *
 */
function disable_author_archive_query() {
  if( preg_match('/author=([0-9]*)/i', $_SERVER['QUERY_STRING']) ){
    wp_redirect( home_url() );
    exit;
  }
}
add_action('init', 'disable_author_archive_query');



?>

関連記事

関連記事はまだありません

スニペット」のBookmark
「スニペット」記事一覧