8. カスタム投稿にて、カテゴリーを指定しなかった場合に、初期値を設定

通常投稿では、カテゴリーを指定しない場合、初期値が設定されるため、同じようにカスタム投稿でも初期値のカテゴリーを設定します。

MEMO
カスタム投稿に初期値を設定しない場合、カテゴリーを指定せずに投稿すると、パーマリンクが正しく動きません。これは、カスタム投稿のパーマリンク設定にタクソノミー(カテゴリー)を指定しているためです。

デモ会員サイトでのターム(カテゴリー、タグ)作成

カスタム投稿にカテゴリーの初期値のタームと、タグの動作確認用タームを作成します。

管理画面->旅行->旅行カテゴリー、旅行タグ

旅行のターム

  • カテゴリー(名前/スラッグ)
旅行全般/travel-whole
  • タグ(名前/スラッグ)
ツアー/tour

管理画面->ケーキ->ケーキカテゴリー、ケーキタグ

ケーキのターム

  • カテゴリー(名前/スラッグ)
ケーキ全般/cake-whole
  • タグ(名前/スラッグ)
果実/fruit

初期値を設定するカスタマイズ

functions.phpに追加します。
自前のグローバル変数はfunctions.phpの上の方で追加しておくと、後で初期値を変更するのに便利です。
functions.php

//****** 自前のグローバル変数 ******
$my_travel_category_default = '旅行全般';
$my_cake_category_default = 'ケーキ全般';

// カスタム投稿タイプでカテゴリ未選択時にデフォルトを設定
function add_defaultcategory_automatically_travel($post_ID) {
    global $wpdb;
    // 設定されているカスタム分類のタームを取得
    $curTerm = wp_get_object_terms($post_ID, 'travel_category');
    // 既存のターム指定数が 0(つまり未設定)であれば)初期値のターム名を指定
    if (0 == count($curTerm)) {
        // 初期値のターム名からターム ID を取得して設定する
        global $my_travel_category_default;
        $term = get_term_by('name',$my_travel_category_default , 'travel_category');
        if ( !empty( $term ) ) {
           $defaultTerm = array( $term->term_id );
           wp_set_object_terms($post_ID, $defaultTerm, 'travel_category');
        }
    }
}
add_action('publish_travel', 'add_defaultcategory_automatically_travel');

function add_defaultcategory_automatically_cake($post_ID) {
   global $wpdb;
   // 設定されているカスタム分類のタームを取得
   $curTerm = wp_get_object_terms($post_ID, 'cake_category');
    // 既存のターム指定数が 0(つまり未設定)であれば)初期値のターム名を指定
    if (0 == count($curTerm)) {
        // 初期値のターム名からターム ID を取得して設定する
        global $my_cake_category_default;
        $term = get_term_by('name',$my_cake_category_default , 'cake_category');
        if ( !empty( $term ) ) {
           $defaultTerm = array( $term->term_id );
           wp_set_object_terms($post_ID, $defaultTerm, 'cake_category');
        }
    }
}
add_action('publish_cake', 'add_defaultcategory_automatically_cake');
参考 functions.phpGist

テスト投稿で初期値が設定されるのかの確認

カテゴリーを指定無し、タグの指定有りで、テスト投稿します。
公開ボタンをクリックして、指定していなかったカテゴリーが指定されていることを確認します。

旅行記事の投稿テスト

  • タイトル
旅行記事の投稿テスト
  • 本文
これは、旅行記事の投稿テストです。
内容は何もありませんが、下のインフォメーションは、wp-membersによりアクセス制限されます。

<!--more-->

<div class="information">この部分は、アクセス制限されていますので、ログインしたら見ることができます。</div>

ケーキ記事の投稿テスト

  • タイトル
ケーキ記事の投稿テスト
  • 本文
これは、ケーキ記事の投稿テストです。
内容は何もありませんが、下のインフォメーションは、wp-membersによりアクセス制限されます。

<!--more-->

<div class="information">この部分は、アクセス制限されていますので、ログインしたら見ることができます。</div>
MEMO
WP-Membersにてアクセス制限した時の確認のため、moreタグを入れています。

Monappy: MBDQ39VHypMQwfyR8SshuHvfPNUz321F6B

Monacoinを投げる
モナゲ(tipmona)ってなに?
そもそもMonacoinってなに?

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください