WordPress様にはお世話になってます。大変便利に使わせて頂いております。
勉強会にも顔を出させていただいて、楽しくやらせて頂いております・・・・が、
本当僕、いっつも思うんですけど、何でブログシステム使ってるのにいちいちHTMLタグ書かなきゃいけないのか。
もう両手釣りそうなくらい<>押して><ですよほんとに。
え?Emmet知らないの?プラグインあるじゃんww
とか言われるけど、タグ打つのが嫌なんですよ。極力打ちたくない。
フックを定義しましょう
まず投稿画面に、フォーム表示させる為の準備として
フックを定義しましょう。よく分からないですけど、Codexぐぐってればそのうち分かります。
/* admin_menu アクションフックでカスタムボックスを定義 */
add_action('admin_menu', 'myplugin_add_custom_box');
/* データが入力された際 save_post アクションフックを使って何か行う */
add_action('save_post', 'myplugin_save_postdata');
/* 投稿・固定ページの "advanced" 画面にカスタムセクションを追加 */
function myplugin_add_custom_box() {
if( function_exists( 'add_meta_box' )) {
add_meta_box( 'myplugin_sectionid', __( '段落', 'myplugin_textdomain' ),
'myplugin_inner_custom_box', 'post', 'advanced' );
# add_meta_box( 'myplugin_sectionid', __( '段落', 'myplugin_textdomain' ),
# 'myplugin_inner_custom_box', 'page', 'advanced' );
}
}
次にフォームのCSSとかJSとか整えます。
長そうに見えますが、あれです。単純にHTMLとかCSSとかJSとか
面倒くさいので直書きしているから長いだけです。
よく見るとなんてことありません。分かり易い様にソース内にコード残しておきました。
/* カスタム投稿・固定ページセクションに内側のフィールドをプリント */
function myplugin_inner_custom_box() {
print<<
.form_contents
{
margin-bottom: 20px;
}
.form_contents_wrap label
{
font-size: 120%;
margin-bottom: 10px;
display:block;
}
textarea
{
width: 50%;
}
.form_cotnents input
{
height: 1.7em;
padding: 3px 8px;
margin: 1px 0;
width: 50%;
}
EOF;
PHP_EOL;
// 認証に nonce を使う
echo ''.PHP_EOL;
// データ入力用の実際のフォーム
echo ''.PHP_EOL;
echo ''.PHP_EOL;
echo ''.PHP_EOL;
echo ''.PHP_EOL;
echo ''.PHP_EOL;
echo ''.PHP_EOL;
echo ''.PHP_EOL;
echo ''.PHP_EOL;
echo ''.PHP_EOL;
echo ''.PHP_EOL;
echo ''.PHP_EOL;
}
チェックと保存
CODEXの内容をほぼコピペです。
/* 投稿を保存した際、カスタムデータも保存する */
function myplugin_save_postdata( $post_id ) {
// データが先ほど作った編集フォームのから適切な認証とともに送られてきたかどうかを確認。
// save_post は他の時にも起動する場合がある。
if ( !wp_verify_nonce( $_POST['myplugin_noncename'], plugin_basename(__FILE__) )) {
return $post_id;
}
// 自動保存ルーチンかどうかチェック。そうだった場合はフォームを送信しない(何もしない)
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE )
return $post_id;
// パーミッションチェック
if ( 'page' == $_POST['post_type'] ) {
if ( !current_user_can( 'edit_page', $post_id ) )
return $post_id;
} else {
if ( !current_user_can( 'edit_post', $post_id ) )
return $post_id;
}
// 承認ができたのでデータを探して保存
for($i = 0; $i < count($_POST); $i++) {
add_post_meta(
$post_id,$_POST["h".$i."_paragraph_t"],
$_POST["h".$i."_paragraph_v"]
);
}
return $mydata;
}
テーマ側
やっぱ上手く説明できんもんですが、これでラストです。
これをやると、自分の場合更新が比較的楽になるような気がしました。
ほんで、これがひっさーーーーしぶりの記事になります。
$headline = get_post_meta(get_the_id());
$arrtmp = array();
foreach($headline as $key => $val)
{
//--_thumbnail_idと_wp_old_slugはget_post_metaじゃないので出力されてるかもしれない
if(!preg_match("/^_/",$key))
{
$id = $post->ID;
echo '';
echo ''.$key.'
';
echo ''.$val[0].'
';
echo '';
$arrtmp[$id] = $val[0];
}
}


コメントを残す