カスタム投稿タイプでスタッフブログ欄を設ける
-
#WP 3.1〜
「スタッフブログの投稿」というカスタム投稿タイプのスラッグが「staff」の場合:
1. カスタム投稿タイプ登録時に register_post_type() で has_archive を true にする。
2. archive-staff.php に index.php 相当の処理を記述。
3. 「スタッフのブログ」ボタンのリンク先を get_post_type_archive_link( ‘staff’ ) にする。Kzさん
いつもお世話になります。
頂いたアドバイスで今から想像のつく限りやってみます。既にいただいた4行のアドバイス全ての行がわからないのですが、
やってみてまた戻ってきますので御教授ください。このカスタム投稿タイプをどうしても覚えたくがんばってやって見ます。
Kzさん
その前に、カスタム投稿タイプを設置して、そのカスタム投稿タイプから新規投稿→記事を書く→公開ボタンを押す と通常なら公開されましたとなるところが画面が白くなったままもとの
管理画面に戻らなくなってしまうのですが、これは何が原因かわかりますでしょうか。因みにfunction.phpには下記のように書いています。
<?php add_action('init', 'my_custom_init'); function my_custom_init() { $labels = array( 'name' => _x('Books', 'post type general name'), 'singular_name' => _x('Book', 'post type singular name'), 'add_new' => _x('Add New', 'book'), 'add_new_item' => __('Add New Book'), 'edit_item' => __('Edit Book'), 'new_item' => __('New Book'), 'view_item' => __('View Book'), 'search_items' => __('Search Books'), 'not_found' => __('No books found'), 'not_found_in_trash' => __('No books found in Trash'), 'parent_item_colon' => '' ); $args = array( 'labels' => $labels, 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'query_var' => true, 'rewrite' => true, 'capability_type' => 'post', 'hierarchical' => false, 'menu_position' => null, 'supports' => array('title','editor','author','thumbnail','excerpt','comments') ); register_post_type('book',$args); } //add filter to insure the text Book, or book, is displayed when user updates a book add_filter('post_updated_messages', 'book_updated_messages'); function book_updated_messages( $messages ) { $messages['book'] = array( 0 => '', // Unused. Messages start at index 1. 1 => sprintf( __('Book updated. <a href="%s">View book</a>'), esc_url( get_permalink($post_ID) ) ), 2 => __('Custom field updated.'), 3 => __('Custom field deleted.'), 4 => __('Book updated.'), /* translators: %s: date and time of the revision */ 5 => isset($_GET['revision']) ? sprintf( __('Book restored to revision from %s'), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false, 6 => sprintf( __('Book published. <a href="%s">View book</a>'), esc_url( get_permalink($post_ID) ) ), 7 => __('Book saved.'), 8 => sprintf( __('Book submitted. <a target="_blank" href="%s">Preview book</a>'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ), 9 => sprintf( __('Book scheduled for: <strong>%1$s</strong>. <a target="_blank" href="%2$s">Preview book</a>'), // translators: Publish box date format, see http://php.net/date date_i18n( __( 'M j, Y @ G:i' ), strtotime( $post->post_date ) ), esc_url( get_permalink($post_ID) ) ), 10 => sprintf( __('Book draft updated. <a target="_blank" href="%s">Preview book</a>'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ), ); return $messages; } //display contextual help for Books add_action( 'contextual_help', 'add_help_text', 10, 3 ); function add_help_text($contextual_help, $screen_id, $screen) { //$contextual_help .= var_dump($screen); // use this to help determine $screen->id if ('book' == $screen->id ) { $contextual_help = '<p>' . __('Things to remember when adding or editing a book:') . '</p>' . '<ul>' . '<li>' . __('Specify the correct genre such as Mystery, or Historic.') . '</li>' . '<li>' . __('Specify the correct writer of the book. Remember that the Author module refers to you, the author of this book review.') . '</li>' . '</ul>' . '<p>' . __('If you want to schedule the book review to be published in the future:') . '</p>' . '<ul>' . '<li>' . __('Under the Publish module, click on the Edit link next to Publish.') . '</li>' . '<li>' . __('Change the date to the date to actual publish this article, then click on Ok.') . '</li>' . '</ul>' . '<p><strong>' . __('For more information:') . '</strong></p>' . '<p>' . __('<a href="http://codex.wordpress.org/Posts_Edit_SubPanel" target="_blank">Edit Posts Documentation</a>') . '</p>' . '<p>' . __('<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>' ; } elseif ( 'edit-book' == $screen->id ) { $contextual_help = '<p>' . __('This is the help screen displaying the table of books blah blah blah.') . '</p>' ; } return $contextual_help; } ?>
これはCodexのこのページのサンプル通りに書いています。
こちらの問題を先に解決したくお力添えのほどよろしくお願いします。
上記コードをまるっと functions.php に貼付けてみましたが正常に動作しました(WP3.1)。
ので、他の記述やらプラグインやらが原因かもしれませんね。wp-config.php で
define ('WPLANG', 'ja');
の下辺りに
define('WP_DEBUG', true );
とか書いておくと何がエラーかわかるかもです。Kzさん
いつもお世話になります。
その通りでした。通常の投稿から新規で投稿しても同じ事が起きました。
何かが壊れてしまったかな。。。define(‘WP_DEBUG’, true ); 凄い。
WPをもう一度インストールしなおして、define(‘WP_DEBUG’, true );して
再度カスタム投稿に挑みます。因みに、Kzさんからのアドバイス中に
「カスタム投稿タイプのスラッグが「staff」の場合:」
とありましたが、これは個々の記事のスラッグがstuffということですか?
この場合、ブログを書く度にスラッグ名を打たなきゃならないのでしょうか。イマイチ理解できないです。
御教授よろしくお願いします。「カスタム投稿タイプ」のスラッグです。
上記コードならregister_post_type('book',$args);
と書いてあるので book というスラッグ名のカスタム投稿タイプを作っています。
「スタッフブログの投稿」というカスタム投稿を作りました。
とのことなので、例えば
register_post_type('staff',$args);
と書いたならスラッグ名は staff ということです◎
- トピック「カスタム投稿タイプでスタッフブログ欄を設ける」には新たに返信することはできません。