WordPress スニペット その2
この前のよりは少し使用頻度は低いもの
◯PC / スマホ 振り分け
→ functions.php
<?php function detect_sp() { $agent = @$_SERVER['HTTP_USER_AGENT']; if (strpos($agent, "iPhone")) { return true; } else if (strpos($agent, "iPod")) { return true; } else if (strpos($agent, "Android")) { if (strpos($agent, "Mobile") !== false) { return true; } } return false; } ?>
→ テンプレートファイル
<?php if ( detect_sp() ) : ?> <!-- スマホ用の記述 --> <?php else : ?> <!-- PC用の記述 --> <?php endif; ?>
◯カスタム投稿タイプ/タクソノミー作成
→ functions.php
<?php // カスタム投稿タイプ 作成 register_post_type( 'POST_TYPE_NAME', array( 'labels' => array( 'name' => __( 'POST_TYPE_NAMEの名前' ), 'singular_name' => __( 'POST_TYPE_NAMEの名前' ) ), 'public' => true, 'menu_position' => 5, 'supports' => array('title','editor','thumbnail', 'custom-fields','excerpt','author','trackbacks', 'comments','revisions','page-attributes'), 'has_archive' => true ) ); // タクソノミー 作成 register_taxonomy( 'TAXONOMY_NAME_category', 'POST_TYPE_NAME', array( 'hierarchical' => true, 'update_count_callback' => '_update_post_term_count', 'label' => 'TAXONOMY_NAMEのラベル', 'singular_label' => 'TAXONOMY_NAMEのラベル', 'rewrite' => array( 'slug' => 'TAXONOMY_NAME' ), 'public' => true, 'show_ui' => true ) ); ?>
◯ウィジェット作成/出力
→ functions.php
<?php register_sidebar( array( 'name' => 'ウィジェット名', 'id' => 'my_widget', 'description' => 'ウィジェットの説明文が入ります。', 'before_widget' => '', 'after_widget' => '', 'before_title' => '', 'after_title' => '' ) ); ?>
→ テンプレートファイル
<?php if ( is_active_sidebar( 'my_widget' ) ) : ?> <!-- ウィジェットに入力項目がある場合 --> <?php dynamic_sidebar( 'my_widget'); ?> <?php else : ?> <!-- ウィジェットに入力項目がない場合 --> <?php endif; ?>
◯サイト情報の出力
→ テンプレートファイル
<!-- サイトURLを出力 --> <?php echo site_url(); ?><!— サイト説明文を出力 —> <?php bloginfo(‘description’); ?>
<!— テンプレートURLを出力 —> <?php bloginfo(‘template_url’); ?>
◯カスタム投稿タイプ/タクソノミー/タームの出力
→ テンプレートファイル
<!-- カスタム投稿タイプ名を出力 --> <?php $postType = get_query_var( 'post_type' ); $postTypeName = esc_html( get_post_type_object( $postType )->label ); ?><!— ターム名、タームスラッグを出力(index.phpなど) —> <?php $terms = get_the_terms($post->ID,array(‘POST_TYPE_NAME’)); if ( $terms && ! is_wp_error( $terms ) ) { foreach ( $terms as $term ) { $termName = $term->name; $termSlug = $term->slug; } } else { // タームが見つからない場合 $termName = ’-’; $termSlug = ’-’; } ?>
<!— ターム名、タームスラッグを出力(taxonomy.php) —> <?php $taxonomy = get_query_var(‘taxonomy’); $term = get_term_by(‘slug’, get_query_var( ‘term’ ), get_query_var( ‘taxonomy’ ) ); $termName = $term->name; $termSlug = $term->slug; ?>
◯ターム一覧の出力
→ テンプレートファイル
<!-- ターム一覧を出力 --> <?php $taxonomy = 'TAXONOMY_NAME'; $args = array( 'hide_empty' => true ); $terms = get_terms( $taxonomy , $args ); if ( count( $terms ) != 0 ) { echo '<ul>'; foreach ( $terms as $term ) { $term = sanitize_term( $term, $taxonomy ); $term_link = get_term_link( $term, $taxonomy ); if ( is_wp_error( $term_link ) ) { continue; } echo '<li><a href="' . esc_url( $term_link ) . '">' . $term->name . '(' . $term->count . ')</a></li>'; } echo '</ul>'; } ?>
◯is_main_query
→ functions.php
<?php function mont_posts_per_page( $wp_query ) { if (!is_admin()) { if ( $wp_query->is_main_query() && $wp_query-> is_front_page() ) { $wp_query->set( 'post_type', array('POST_TYPE_NAME') ); $wp_query->set( 'posts_per_page', 15 ); } } } add_action( 'pre_get_posts', 'mont_posts_per_page' ); ?>
→ テンプレートファイル
<?php if($wp_query -> have_posts()): ?> <?php while($wp_query -> have_posts()): $wp_query->the_post();?> <?php the_permalink(); ?> <?php the_title(); ?> <?php endwhile; ?> <?php endif; ?>
◯ページ送り関連
→ テンプレートファイル
<!-- 最大ページ数を表示 --> <?php echo $wp_query->max_num_pages; ?><!— 次のページがある場合の処理 —> <?php $next_link = get_next_posts_link(); ?> <?php if ( isset( $next_link ) ) : ?> <!— 次のページがある場合 —> <?php endif; ?>
◯検索関連タグ
→ テンプレートファイル
<!-- 検索フォーム --> <form role="search" method="get" id="searchform" action="<?php echo home_url(); ?>"> <?php if ( is_search() ) : ?> <input type="text" placeholder="検索" name="s" id="s" value="<?php the_search_query(); ?>"> <?php else : ?> <input type="text" placeholder="検索" name="s" id="s"> <?php endif; ?> <input type="submit"> </form><!— 検索キーワードを出力 —> 「<?php the_search_query(); ?>」の検索結果
<!— 検索件数を出力 —> <?php echo $wp_query->found_posts; ?>件
◯管理画面設定
→ functions.php
<?php // 管理画面のメニューを非表示 function remove_admin_menus() { global $menu; unset($menu[2]); // ダッシュボード unset($menu[5]); // 投稿 unset($menu[10]); // メディア unset($menu[20]); // 固定ページ unset($menu[25]); // コメント unset($menu[60]); // 外観 unset($menu[65]); // プラグイン unset($menu[70]); // ユーザー unset($menu[75]); // ツール unset($menu[80]); // 設定 } add_action('admin_menu', 'remove_admin_menus'); ?>
→ functions.php
<?php // 管理画面 ダッシュボードにカスタム投稿タイプの投稿数を表示 function dashboard_customposttype_items( $elements ) { foreach ( array( 'POST_TYPE_NAME','POST_TYPE_NAME' ) as $post_type ) { $num_posts = wp_count_posts( $post_type ); if ( $num_posts && $num_posts->publish ) { $text = number_format_i18n( $num_posts->publish ).' 件'; $postTypeLabel = get_post_type_object( $post_type )->label; $elements[] = sprintf( '<a href="edit.php?post_type=%1$s" class="%1$s-count"><b>%3$s</b>:%2$s</a>', $post_type, $text, $postTypeLabel ); } } return $elements; } add_filter( 'dashboard_glance_items', 'dashboard_customposttype_items' );// 管理画面 ダッシュボードにカスタム投稿タイプの投稿数を表示 アイコン function dashboard_style() { ?> <style> #dashboard_right_now .POST_TYPE_NAME-count:before, #dashboard_right_now .POST_TYPE_NAME-count:before { content: “\f109”; } </style> <?php } add_action( ‘admin_print_styles’, ‘dashboard_style’ );
?>