とりあえずfunctions.phpに書いとくと便利かもしれないシリーズ【WordPress】

今年の雪は急にやってきたりいなくなったり、忙しい天気ですね。
WordPressのカスタマイズをしていて、なんだか毎回functions.phpに同じこと書いてることが増えたので備忘録代わりに。
定番のものから小ネタまで。

ソースコード周り

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');

ど定番ですがまぁ。定番ってことは便利ってことです。

固定ページ名をbodyのクラス名として追加

function pagename_class($classes = '') {
if(is_page()) {
    $page = get_post(get_the_ID());
    $classes[] = $page->post_name .' page_' .$page->post_name;
}
return $classes;
}
add_filter('body_class','pagename_class');

ページ名のクラスがあったほうがCSS書く時便利ですからね。

CSS、Javascriptの読み込み

function theme_enqueue_styles() {
    // 親テーマのstyle.css
    wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
    // 子テーマのstyle.css
    wp_enqueue_style( 'child-style',
        get_stylesheet_directory_uri() . '/style.css',
        array('parent-style')
    );
}
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );

これは子テーマでテーマを作っていく場合になりますが。

親テーマの不要なCSSを削除

function my_dequeue_styles() {
    wp_dequeue_style( $handle );
}
add_action( 'wp_enqueue_scripts', 'my_dequeue_styles', 9999 );

逆に親テーマのCSSで不要なCSSを読み込みたくない時に。
$handle探すのに手間取ったりもしますが。。

ダッシュボード関連

自動で入力されるPタグを入れない。

if(is_page()){
    remove_filter('the_content', 'wpautop');
    remove_filter('the_excerpt', 'wpautop');
}

記事(POST)はお客さんが使うことも考慮して固定ページにしました。

ウィジェットエリアを追加

function my_widgets(){
    register_sidebar(array(
        'name' => 'ウィジット名', 
        'description' => 'テキストテキストテキストテキストテキスト',
        'id' => 'widgetID',
        'class' => 'className',
        'before_widget' => '<aside id="%1$s" class="widget %2$s">',
        'after_widget'  => '</aside>',
        'before_title'  => '<h2 class="widget-title">',
        'after_title'   => '</h2>',
    ));
}
add_action('widgets_init', 'my_widgets');

追加したら利用したい場所に

<?php
    dynamic_sidebar( $number );
    // $numberはサイドバーの名前または ID。
?>

投稿の画像相対パスを絶対パスに書き換え

function replaceImagePath($arg) {
    $content = str_replace('"images/', '"' . get_stylesheet_directory_uri() . '/images/', $arg);
        return $content;
}
add_action('the_content', 'replaceImagePath');

ソースをペタッとWordPressに貼り付けて、あれれ、相対パスが切れた。をなくすよう。
自分のテーマディレクトリの直下にimagesフォルダがある場合です。
パスは適宜変更してください。
小ネタですが以外と便利です。

サイト名のショートコード

function shortcode_siteurl() {
    return home_url() .'/';
}
add_shortcode('siteurl', 'shortcode_siteurl');

これも上と似たようなもんですが、WordPressのテキストエディターでリンク貼ったりする時に。
自分ではあんまりショートコードは使わないんですけど。
いろいろな人が使う場合はあると重宝することがあります。

小ネタ

Advanced Custom Fieldsで画像のパスを取得(ID利用)

function get_afc_imgurl($slug){
    if(get_field($slug)){
        //画像(返り値は「画像ID」)
        $img = get_field($slug);
        $imgurl = wp_get_attachment_image_src($img['id'], 'full'); //サイズは自由に変更   

        return $imgurl[0]; 
    }
}

基本はthe_field()だけで出力できちゃうお手軽さもAdvance Custom Fieldプラグインの魅力の一つ。
画像の時(IDを利用している場合)にパスの出力忘れることが多かったので関数にしてみました。

感想

簡単なものばかりですけど。
最近はset_query_var()で変数をget_template_part()に渡してget_query_var()で受けてごにょごにょっていうのがちょっとお気に入りです。
固定ページの内容なんかもファイル切り分けてページモジュールみたいにしちゃうと結構楽で。

やり方は人それぞれだと思います、何か使えそうなものがあったらどうぞご利用ください。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です