WordPress制作時に良く使うコードスニペット:functions系

コードスニペットの最後のネタです。
fuctions.phpで良く使うコードです。

カスタムメニューの追加

[php] register_nav_menus( array(
‘header’ => ‘ヘッダーナビ’,
‘global’ => ‘グローバルナビ’,
‘footer’ => ‘フッターナビ’,
) );
[/php]

ウィジェットの追加

[php] register_sidebar( array(
‘name’ => ‘サイドバーウィジェットエリア(上)’,
‘id’ => ‘primary-widget-area’,
‘description’ => ‘サイドバーのウィジェットエリア’,
‘before_widget’ => ‘<aside id="%1$s" class="widget-container %2$s">’,
‘after_widget’ => ‘</aside>’,
‘before_title’ => ‘<h1 class="widget-title">’,
‘after_title’ => ‘</h1>’,
) );

[/php]

カスタムヘッダー

[php] if ( ! defined( ‘HEADER_IMAGE’ ) )
define( ‘HEADER_IMAGE’, ‘%s/img/custom-header.png’ );

define( ‘HEADER_IMAGE_WIDTH’, 940 );
define( ‘HEADER_IMAGE_HEIGHT’,340 );

define( ‘NO_HEADER_TEXT’, true );
define( ‘HEADER_TEXTCOLOR’, ” );
[/php]

アイキャッチの機能の追加

[php] add_theme_support( ‘post-thumbnails’ );
[/php]

管理画面のメニュー削除

[php] function remove_menu() {
remove_menu_page(‘index.php’); // ダッシュボード
remove_menu_page(‘edit.php’); // 投稿
remove_menu_page(‘upload.php’); // メディア
remove_menu_page(‘link-manager.php’); // リンク
remove_menu_page(‘edit.php?post_type=page’); // 固定ページ
remove_menu_page(‘edit-comments.php’); // コメント
remove_menu_page(‘themes.php’); // 外観
remove_menu_page(‘plugins.php’); // プラグイン
remove_menu_page(‘users.php’); // ユーザー
remove_menu_page(‘tools.php’); // ツール
remove_menu_page(‘options-general.php’); // 設定
}
add_action(‘admin_menu’, ‘remove_menu’);
[/php]

管理画面にオリジナルメニューの追加

[php] function test_menu_page() {
$siteurl = get_option( ‘siteurl’ );
?>
<div class="wrap">
<p>ここにページで表示したいものを記述</p>
</div>
<?php
}
function test_admin_menu() {
add_menu_page( ‘ページのタイトル’, ‘サイドバーに表示される項目名’, ‘read’, __FILE__, ‘test_menu_page’ );
}
add_action( ‘admin_menu’, ‘test_admin_menu’ );
[/php]

管理画面のサブメニューの削除

[php] function remove_menu() {
// ダッシュボードの「更新」を非表示
remove_submenu_page(‘index.php’, ‘update-core.php’);
// 投稿の「タグ」を非表示
remove_submenu_page(‘edit.php’, ‘edit-tags.php?taxonomy=post_tag’);
}
add_action(‘admin_menu’, ‘remove_menu’);
[/php]

プラグインの設定メニューを削除

[php] function remove_menu() {
remove_menu_page(‘plugin_name1’);
remove_menu_page(‘plugin_name2’);
}
add_action(‘admin_menu’, ‘remove_menu’);
[/php]

投稿・固定ページの表示項目の削除

[php] // 投稿
function remove_default_post_screen_metaboxes() {
remove_meta_box( ‘postexcerpt’,’post’,’normal’ ); // 抜粋
remove_meta_box( ‘trackbacksdiv’,’post’,’normal’ ); // トラックバック送信
remove_meta_box( ‘postcustom’,’post’,’normal’ ); // カスタムフィールド
remove_meta_box( ‘commentstatusdiv’,’post’,’normal’ ); // ディスカッション
remove_meta_box( ‘commentsdiv’,’post’,’normal’ ); // コメント
remove_meta_box( ‘slugdiv’,’post’,’normal’ ); // スラッグ
remove_meta_box( ‘authordiv’,’post’,’normal’ ); // 作成者
remove_meta_box( ‘revisionsdiv’,’post’,’normal’ ); // リビジョン
remove_meta_box( ‘formatdiv’,’post’,’normal’ ); // フォーマット
remove_meta_box( ‘categorydiv’,’post’,’normal’ ); // カテゴリー
remove_meta_box( ‘tagsdiv-post_tag’,’post’,’normal’ ); // タグ
}
add_action(‘admin_menu’,’remove_default_post_screen_metaboxes’);

// 固定ページ
function remove_default_page_screen_metaboxes() {
remove_meta_box( ‘postcustom’,’page’,’normal’ ); // カスタムフィールド
remove_meta_box( ‘commentstatusdiv’,’page’,’normal’ ); // ディスカッション
remove_meta_box( ‘commentsdiv’,’page’,’normal’ ); // コメント
remove_meta_box( ‘slugdiv’,’page’,’normal’ ); // スラッグ
remove_meta_box( ‘authordiv’,’page’,’normal’ ); // 作成者
remove_meta_box( ‘revisionsdiv’,’page’,’normal’ ); // リビジョン
}
add_action(‘admin_menu’,’remove_default_page_screen_metaboxes’);
[/php]

管理画面のメニューの名前を変更

[php] function edit_admin_menus() {
global $menu;
global $submenu;

$menu[5][0] = ‘その他’;
$submenu[‘edit.php’][5][0] = その他一覧’;
}
add_action( ‘admin_menu’, ‘edit_admin_menus’ );
[/php]

管理画面のメニューの並び替え

配列の順番を前後するだけでメニューの並びが変わります。

[php] function custom_menu_order($menu_ord) {
if (!$menu_ord) return true;
return array(
‘index.php’, // Dashboard
‘separator1’, // First separator
‘edit.php’, // Posts
‘upload.php’, // Media
‘link-manager.php’, // Links
‘edit.php?post_type=page’, // Pages
‘edit-comments.php’, // Comments
‘separator2’, // Second separator
‘themes.php’, // Appearance
‘plugins.php’, // Plugins
‘users.php’, // Users
‘tools.php’, // Tools
‘options-general.php’, // Settings
‘separator-last’, // Last separator
);
}
add_filter(‘custom_menu_order’, ‘custom_menu_order’); // Activate custom_menu_order
add_filter(‘menu_order’, ‘custom_menu_order’);
[/php]

ウィジェットボタンの追加

[php] class MyWidgetItem extends WP_Widget {
function MyWidgetItem() {
parent::WP_Widget(false, $name = ‘ウィジェットの名前’);
}
function widget($args, $instance) {
extract( $args );
$title = apply_filters( ‘widget_title’, $instance[‘title’] );
$body = apply_filters( ‘widget_body’, $instance[‘body’] );
?>
<li <?php echo ‘id="foo"’; ?> >
<?php if ( $title ) ?>
<?php echo $before_title . $title . $after_title; ?>
<?php echo ‘<p>’ . $body . ‘</p>’; ?>
</li>
<?php
}
function update($new_instance, $old_instance) {
$instance = $old_instance;
$instance[‘title’] = strip_tags($new_instance[‘title’]);
$instance[‘body’] = trim($new_instance[‘body’]);
return $instance;
}
function form($instance) {
$title = esc_attr($instance[‘title’]);
$body = esc_attr($instance[‘body’]);
?>
<p>
<label for="<?php echo $this->get_field_id(‘title’); ?>">
<?php _e(‘サイトに表示されるコンテンツ:’); ?>
</label>
<input class="widefat" id="<?php echo $this->get_field_id(‘title’); ?>" name="<?php echo $this->get_field_name(‘title’); ?>" type="text" value="<?php echo $title; ?>" />
</p>

<p>
<label for="<?php echo $this->get_field_id(‘body’); ?>">
<?php _e(‘サイトに表示されるコンテンツ:’); ?>
</label>
<textarea class="widefat" rows="16" colls="20" id="<?php echo $this->get_field_id(‘body’); ?>" name="<?php echo $this->get_field_name(‘body’); ?>">
<?php echo $body; ?>
</textarea>
</p>
<?php
}
}
add_action(‘widgets_init’, create_function(”, ‘return register_widget("MyWidgetItem");’));
[/php]

上記のスニペットはこちらからダウンロード出来ます。(cada2用)

よかったらシェアしてね!
URLをコピーする
URLをコピーしました!

「エンジニアのためのWordPress開発入門」を執筆しました!

WordPressを使った開発案件は依然多く、それに携わるWebエンジニアも多数存在します。ただし、モダンな開発手法に慣れたWebエンジニアがWordPressに初めて触れたとき、その独特のアーキテクチャやシステムの構成に戸惑いを感じることがあるかもしれません。だが、WordPressは、それらを補ったうえにさらに強力なメリットを持ち合わせています。本書は、PHPプログラマがWordPressで開発する際に必要な基礎知識から、現場で役立つ具体的なカスタマイズ手法や開発のポイントについて詳しく解説しています。

この記事を書いた人

NPO法人のHP制作(WordPress)やkintoneを使った業務システムの構築をしています。サイボウズ株式会社公認kintoneエバンジェリスト/CoderDojo西宮と梅田のチャンピオン/認定NPO法人宝塚NPOセンター理事/NPO法人SEIN理事/

コメント

コメント一覧 (5件)

コメントする

目次
閉じる