gobylover
フォーラムへの返信
-
フォーラム: 使い方全般
返信が含まれるトピック: ユーザー情報をカスタマイズするには?ありがとうございます。
落ち着いてやってみたところ実装出来ました。
以下、拙いコードかと思いますが、掲載いたします。
add_action( 'edit_user_profile', 'add_profile_fields' ); function add_profile_fields( $user ) { ?> <h3>追加情報</h3> <table class="form-table"> <tr> <th>日付</th> <td> <input type="date" name="date" value="<?php echo esc_attr( get_the_author_meta( 'date', $user->ID ) ); ?>"> </td> </tr> <tr> <th>数値</th> <td> <input type="number" name="number" value="<?php echo esc_attr( get_the_author_meta( 'number', $user->ID ) ); ?>"> </td> </tr> <tr> <th>チェックボックス</th> <td> <input type="checkbox" name="checkbox" value="選択肢1" <?php if(get_the_author_meta( 'checkbox', $user->ID )=="選択肢1"){echo "checked=\"checked\"";}?>>選択肢1 <input type="checkbox" name="checkbox" value="選択肢2" <?php if(get_the_author_meta( 'checkbox', $user->ID )=="選択肢2"){echo "checked=\"checked\"";}?>>選択肢2 </td> </tr> <tr> <th>テキスト</th> <td> <input type="text" name="text" value="<?php echo esc_attr( get_the_author_meta( 'text', $user->ID ) ); ?>"> </td> </tr> <tr> <th>ラジオボタン</th> <td> <input type="radio" name="radio" value="選択肢1" <?php if(get_the_author_meta( 'radio', $user->ID )=="選択肢1"){echo "checked=\"checked\"";}?>>選択肢1 <input type="radio" name="radio" value="選択肢2" <?php if(get_the_author_meta( 'radio', $user->ID )=="選択肢2"){echo "checked=\"checked\"";}?>>選択肢2 </td> </tr> </table> <?php } add_action( 'edit_user_profile_update', 'save_profile_fields' ); function save_profile_fields( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) return false; update_usermeta( $user_id, 'date', $_POST['date'] ); update_usermeta( $user_id, 'number', $_POST['number'] ); update_usermeta( $user_id, 'checkbox', $_POST['checkbox'] ); update_usermeta( $user_id, 'text', $_POST['text'] ); update_usermeta( $user_id, 'radio', $_POST['radio'] ); }
画像のアップロードに関して、ご紹介ありがとうございます。
ネット上のコードをコピペ&ちょっとだけいじる、というレベルの自分にはなかなか応用が難しいですね…
フォーラム: 使い方全般
返信が含まれるトピック: マルチサイトで共有しているテーマで別々のCSSを使用するには?お返事ありがとうございます。
なるほど!CSS用のテキストエリアを追加、という発想は思いつきませんでした!
試してみたいと思います。
フォーラム: 使い方全般
返信が含まれるトピック: 『公開』メタボックスに注意書きをつける方法ありがとうございます!
post_submitbox_startを利用して公開メタボックスに注意書きを表示することが出来ました。
フォーラム: 使い方全般
返信が含まれるトピック: カレンダー/アーカイブウィジェットにカスタム投稿も反映させるには?カレンダーに関しても実装できました!
基本的にはコピペなので、不備はあるのかもしれませんが、以下のURLを参考に以下のコードで実現しました。Adding Custom Post Types To get_calendar() And The Calendar Widget
function ucc_get_calendar( $post_types = 'custom' , $initial = true , $echo = true ) { global $wpdb, $m, $monthnum, $year, $wp_locale, $posts; if ( empty( $post_types ) || !is_array( $post_types ) ) { $args = array( 'public' => true , '_builtin' => false ); $output = 'names'; $operator = 'and'; $post_types = get_post_types( $args , $output , $operator ); $post_types = array_merge( $post_types , array( 'post' ) ); } else { /* Trust but verify. */ $my_post_types = array(); foreach ( $post_types as $post_type ) { if ( post_type_exists( $post_type ) ) $my_post_types[] = $post_type; } $post_types = $my_post_types; } $post_types_key = implode( '' , $post_types ); $post_types = "'" . implode( "' , '" , $post_types ) . "'"; $cache = array(); $key = md5( $m . $monthnum . $year . $post_types_key ); if ( $cache = wp_cache_get( 'get_calendar' , 'calendar' ) ) { if ( is_array( $cache ) && isset( $cache[$key] ) ) { remove_filter( 'get_calendar' , 'ucc_get_calendar_filter' ); $output = apply_filters( 'get_calendar', $cache[$key] ); add_filter( 'get_calendar' , 'ucc_get_calendar_filter' ); if ( $echo ) { echo $output; return; } else { return $output; } } } if ( !is_array( $cache ) ) $cache = array(); // Quick check. If we have no posts at all, abort! if ( !$posts ) { $sql = "SELECT 1 as test FROM $wpdb->posts WHERE post_type IN ( $post_types ) AND post_status = 'publish' LIMIT 1"; $gotsome = $wpdb->get_var( $sql ); if ( !$gotsome ) { $cache[$key] = ''; wp_cache_set( 'get_calendar' , $cache , 'calendar' ); return; } } if ( isset( $_GET['w'] ) ) $w = '' . intval( $_GET['w'] ); // week_begins = 0 stands for Sunday $week_begins = intval( get_option( 'start_of_week' ) ); // Let's figure out when we are if ( !empty( $monthnum ) && !empty( $year ) ) { $thismonth = '' . zeroise( intval( $monthnum ) , 2 ); $thisyear = ''.intval($year); } elseif ( !empty( $w ) ) { // We need to get the month from MySQL $thisyear = '' . intval( substr( $m , 0 , 4 ) ); $d = ( ( $w - 1 ) * 7 ) + 6; //it seems MySQL's weeks disagree with PHP's $thismonth = $wpdb->get_var( "SELECT DATE_FORMAT( ( DATE_ADD( '${thisyear}0101' , INTERVAL $d DAY ) ) , '%m' ) " ); } elseif ( !empty( $m ) ) { $thisyear = '' . intval( substr( $m , 0 , 4 ) ); if ( strlen( $m ) < 6 ) $thismonth = '01'; else $thismonth = '' . zeroise( intval( substr( $m , 4 , 2 ) ) , 2 ); } else { $thisyear = gmdate( 'Y' , current_time( 'timestamp' ) ); $thismonth = gmdate( 'm' , current_time( 'timestamp' ) ); } $unixmonth = mktime( 0 , 0 , 0 , $thismonth , 1 , $thisyear); // Get the next and previous month and year with at least one post $previous = $wpdb->get_row( "SELECT DISTINCT MONTH( post_date ) AS month , YEAR( post_date ) AS year FROM $wpdb->posts WHERE post_date < '$thisyear-$thismonth-01' AND post_type IN ( $post_types ) AND post_status = 'publish' ORDER BY post_date DESC LIMIT 1" ); $next = $wpdb->get_row( "SELECT DISTINCT MONTH( post_date ) AS month, YEAR( post_date ) AS year FROM $wpdb->posts WHERE post_date > '$thisyear-$thismonth-01' AND MONTH( post_date ) != MONTH( '$thisyear-$thismonth-01' ) AND post_type IN ( $post_types ) AND post_status = 'publish' ORDER BY post_date ASC LIMIT 1" ); /* translators: Calendar caption: 1: month name, 2: 4-digit year */ $calendar_caption = _x( '%1$s %2$s' , 'calendar caption' ); $calendar_output = '<table id="wp-calendar" summary="' . esc_attr__( 'Calendar' ) . '"> <caption>' . sprintf( $calendar_caption , $wp_locale->get_month( $thismonth ) , date( 'Y' , $unixmonth ) ) . '</caption> <thead> <tr>'; $myweek = array(); for ( $wdcount = 0 ; $wdcount <= 6 ; $wdcount++ ) { $myweek[] = $wp_locale->get_weekday( ( $wdcount + $week_begins ) % 7 ); } foreach ( $myweek as $wd ) { $day_name = ( true == $initial ) ? $wp_locale->get_weekday_initial( $wd ) : $wp_locale->get_weekday_abbrev( $wd ); $wd = esc_attr( $wd ); $calendar_output .= "\n\t\t<th scope=\"col\" title=\"$wd\">$day_name</th>"; } $calendar_output .= ' </tr> </thead> <tfoot> <tr>'; if ( $previous ) { $calendar_output .= "\n\t\t" . '<td colspan="3" id="prev"><a href="' . get_month_link( $previous->year , $previous->month ) . '" title="' . sprintf( __( 'View posts for %1$s %2$s' ) , $wp_locale->get_month( $previous->month ) , date( 'Y' , mktime( 0 , 0 , 0 , $previous->month , 1 , $previous->year ) ) ) . '">« ' . $wp_locale->get_month_abbrev( $wp_locale->get_month( $previous->month ) ) . '</a></td>'; } else { $calendar_output .= "\n\t\t" . '<td colspan="3" id="prev" class="pad"> </td>'; } $calendar_output .= "\n\t\t" . '<td class="pad"> </td>'; if ( $next ) { $calendar_output .= "\n\t\t" . '<td colspan="3" id="next"><a href="' . get_month_link( $next->year , $next->month ) . '" title="' . esc_attr( sprintf( __( 'View posts for %1$s %2$s' ) , $wp_locale->get_month( $next->month ) , date( 'Y' , mktime( 0 , 0 , 0 , $next->month , 1 , $next->year ) ) ) ) . '">' . $wp_locale->get_month_abbrev( $wp_locale->get_month( $next->month ) ) . ' &r aquo;</a></td>'; } else { $calendar_output .= "\n\t\t" . '<td colspan="3" id="next" class="pad"> </td>'; } $calendar_output .= ' </tr> </tfoot> <tbody> <tr>'; // Get days with posts $dayswithposts = $wpdb->get_results( "SELECT DISTINCT DAYOFMONTH( post_date ) FROM $wpdb->posts WHERE MONTH( post_date ) = '$thismonth' AND YEAR( post_date ) = '$thisyear' AND post_type IN ( $post_types ) AND post_status = 'publish' AND post_date < '" . current_time( 'mysql' ) . '\'', ARRAY_N ); if ( $dayswithposts ) { foreach ( (array) $dayswithposts as $daywith ) { $daywithpost[] = $daywith[0]; } } else { $daywithpost = array(); } if ( strpos( $_SERVER['HTTP_USER_AGENT'] , 'MSIE' ) !== false || stripos( $_SERVER['HTTP_USER_AGENT'] , 'camino' ) !== false || stripos( $_SERVER['HTTP_USER_AGENT'] , 'safari' ) !== false ) $ak_title_separator = "\n"; else $ak_title_separator = ', '; $ak_titles_for_day = array(); $ak_post_titles = $wpdb->get_results( "SELECT ID, post_title, DAYOFMONTH( post_date ) as dom " . "FROM $wpdb->posts " . "WHERE YEAR( post_date ) = '$thisyear' " . "AND MONTH( post_date ) = '$thismonth' " . "AND post_date < '" . current_time( 'mysql' ) . "' " . "AND post_type IN ( $post_types ) AND post_status = 'publish'" ); if ( $ak_post_titles ) { foreach ( (array) $ak_post_titles as $ak_post_title ) { $post_title = esc_attr( apply_filters( 'the_title' , $ak_post_title->post_title , $ak_post_title->ID ) ); if ( empty( $ak_titles_for_day['day_' . $ak_post_title->dom] ) ) $ak_titles_for_day['day_'.$ak_post_title->dom] = ''; if ( empty( $ak_titles_for_day["$ak_post_title->dom"] ) ) // first one $ak_titles_for_day["$ak_post_title->dom"] = $post_title; else $ak_titles_for_day["$ak_post_title->dom"] .= $ak_title_separator . $post_title; } } // See how much we should pad in the beginning $pad = calendar_week_mod( date( 'w' , $unixmonth ) - $week_begins ); if ( 0 != $pad ) $calendar_output .= "\n\t\t" . '<td colspan="' . esc_attr( $pad ) . '" class="pad"> </td>'; $daysinmonth = intval( date( 't' , $unixmonth ) ); for ( $day = 1 ; $day <= $daysinmonth ; ++$day ) { if ( isset( $newrow ) && $newrow ) $calendar_output .= "\n\t</tr>\n\t<tr>\n\t\t"; $newrow = false; if ( $day == gmdate( 'j' , current_time( 'timestamp' ) ) && $thismonth == gmdate( 'm' , current_time( 'timestamp' ) ) && $thisyear == gmdate( 'Y' , current_time( 'timestamp' ) ) ) $calendar_output .= '<td id="today">'; else $calendar_output .= '<td>'; if ( in_array( $day , $daywithpost ) ) // any posts today? $calendar_output .= '<a href="' . get_day_link( $thisyear , $thismonth , $day ) . "\" title=\"" . esc_attr( $ak_titles_for_day[$day] ) . "\">$day</a>"; else $calendar_output .= $day; $calendar_output .= '</td>'; if ( 6 == calendar_week_mod( date( 'w' , mktime( 0 , 0 , 0 , $thismonth , $day , $thisyear ) ) - $week_begins ) ) $newrow = true; } $pad = 7 - calendar_week_mod( date( 'w' , mktime( 0 , 0 , 0 , $thismonth , $day , $thisyear ) ) - $week_begins ); if ( $pad != 0 && $pad != 7 ) $calendar_output .= "\n\t\t" . '<td class="pad" colspan="' . esc_attr( $pad ) . '"> </td>'; $calendar_output .= "\n\t</tr>\n\t</tbody>\n\t</table>"; $cache[$key] = $calendar_output; wp_cache_set( 'get_calendar' , $cache, 'calendar' ); remove_filter( 'get_calendar' , 'ucc_get_calendar_filter' ); $output = apply_filters( 'get_calendar', $calendar_output ); add_filter( 'get_calendar' , 'ucc_get_calendar_filter' ); if ( $echo ) echo $output; else return $output; } function ucc_get_calendar_filter( $content ) { $output = ucc_get_calendar( '' , '' , false ); return $output; } add_filter( 'get_calendar' , 'ucc_get_calendar_filter' , 10 , 2 );
フォーラム: 使い方全般
返信が含まれるトピック: カレンダー/アーカイブウィジェットにカスタム投稿も反映させるには?ご回答ありがとうございます。
取り急ぎアーカイブに関して、頂いたアドバイスを参考に再度WEB上でも諸々調べてみたところ、以下のものを参考に、想定通りの挙動を実現することが出来ました!
http://wordpress.stackexchange.com/questions/67264/overriding-wp-get-archives-apply-filters
add_filter( 'getarchives_where', 'my_getarchives_where' ); function my_getarchives_where() { return "WHERE post_type = 'post' OR post_type = 'custom' AND post_status = 'publish'"; }
ウィジェットではないアーカイブにも含まれるという点については、もともとその為の記述をしていたところなので、好都合でした!
ありがとうございます!