サポート » 使い方全般 » カスタム投稿タイプでスタッフブログ欄を設ける

  • 解決済 isseiaone

    (@isseiaone)


    現在小小規模な病院のWEBサイトをワードプレスで作っています。

    管理画面内の「投稿」の他に「スタッフブログの投稿」というカスタム投稿を作りました。

    index.phpにある「スタッフのブログ」ボタンを押すと、
    最新の「スタッフブログ」記事が5つくらい表示されるようにしたいのですが、
    どのようにしたらよいのでしょうか。

    御教授お願いいたします。

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • #WP 3.1〜

    「スタッフブログの投稿」というカスタム投稿タイプのスラッグが「staff」の場合:
    1. カスタム投稿タイプ登録時に register_post_type() で has_archive を true にする。
    2. archive-staff.php に index.php 相当の処理を記述。
    3. 「スタッフのブログ」ボタンのリンク先を get_post_type_archive_link( ‘staff’ ) にする。

    トピック投稿者 isseiaone

    (@isseiaone)

    トピック投稿者 isseiaone

    (@isseiaone)

    Kzさん

    いつもお世話になります。
    頂いたアドバイスで今から想像のつく限りやってみます。

    既にいただいた4行のアドバイス全ての行がわからないのですが、
    やってみてまた戻ってきますので御教授ください。

    このカスタム投稿タイプをどうしても覚えたくがんばってやって見ます。

    トピック投稿者 isseiaone

    (@isseiaone)

    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 );
    とか書いておくと何がエラーかわかるかもです。

    トピック投稿者 isseiaone

    (@isseiaone)

    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 ということです◎

    トピック投稿者 isseiaone

    (@isseiaone)

    Kzさん

    いつもお世話になります。
    「カスタム投稿タイプ」のスラッグの件ありがとうございます。

    やってみます。
    いつもわかりやすい解説ありがとうございます。

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • トピック「カスタム投稿タイプでスタッフブログ欄を設ける」には新たに返信することはできません。