All-in-One Event Calendarと他のプラグイン併用で実装したことメモ

All-in-One Event Calendarのメモ
のページで、All-in-One Event Calendarのみのカスタマイズは全てまとめていますが、他のプラグインを併用したものについてもまとめてしまうと冗長になるので、ページを分けました。

スポンサーリンク

イベントを掲載したら、ハッシュタグをつけて自動的にツイートしたい

All-in-One Event Calendarのタグ(events_tags)は、通常のpostやpageのタグ(post_tag)と別のタクソノミーです。
当初は「カスタム投稿タイプが ai1ec_event の時、 events_tags を post_tag にセットする」方法を取ろうとしていました。
しかし使い方を考えると、別である方が都合がいいなと思いました。

イベントカレンダーを実装したサイトは、ユーザー登録した人なら誰でもイベントを掲載でき、それを自動的に公式アカウントでツイートしたいのですね。

ツイッターのハッシュタグは、人によっては文字数の長いものを入れたり、英語版と日本語版、正式名称と略称など、もりもり付ける人もいます。
例えば私が先日主催したオフ会でも「AC」「ACOD」「アダルトチルドレン」「虐待サバイバー」「毒親」「機能不全家庭」「自助会」「当事者会」「大阪」などを付けることができます。

しかしイベントカレンダー上では必要最低限のみにしてほしいのですね。
なぜならサイトそのものが毒親に関するイベントの告知サイトですので、「毒親」「機能不全家庭」「自助会」「当事者会」は全てのイベントに該当するため付ける必要がありません。
また、カレンダーのイベント表示を絞り込むためのタグなので、「AC」「ACOD」「アダルトチルドレン」「虐待サバイバー」といった表記ブレに対応する必要もありません。
カテゴリで開催地域を選択しますので「大阪」をタグで設定する必要もありません。

カスタム投稿タイプにpostと共通で使用できるタグ欄を追加

参考 カスタム投稿タイプのタグを出力表示できますか?
繰り返しますが、この方法だとAll-in-One Event Calanderの作ったタグと、postと共通のタグの二つが実装されます。

add_action( 'init', function () {
register_taxonomy( 'post_tag', [ 'post', 'ai1ec_event' ],
[
'hierarchical' => false,
'query_var' => 'tag',
]
);
} );

add_action( 'pre_get_posts', function ( $query ) {
if ( is_admin() && ! $query->is_main_query() ) {
return;
}
if ( $query->is_category() || $query->is_tag() ) {
$query->set( 'post_type', [ 'post', 'ai1ec_event' ] );
}
} );

イベント編集ページのメタボックス名を変更する

上記の設定が済んだだけだと、イベント編集画面では「タグ」というメタボックスが二つ存在することになります。
もちろん先述の通りそれぞれ別なんですけどね。
そのままではややこしいので、メタボックス名を変更する必要があります。

一番簡単なのはCSSだと思います。
div#tagsdiv-post_tag h2{display:none;}
でbeforeで好きな文字列を設定すればいいんじゃないかと。

ただ、私の場合はイベント寄稿者の管理メニューをカスタマイズしたかったので「User Role Editor」と「WP Admin UI Customize」で併せて設定しました。

User Role Editor

イベント寄稿者にpostの編集権限を与えます。
でないとイベントカレンダーからもツイート可能なタグが、編集できません。

WP Admin UI Customize

postの編集権限は与えましたが、現時点ではpostを編集して貰う必要性はないため、管理バーやサイドバーから表示しないようにします。
ダッシュボードも必要がない項目を削除します。
「イベント」のメタボックス名を適宜変更します。
「ハッシュタグ(ツイッター連携)」「タグ(カレンダー用)」という風にしてみました。

WP Admin UI Customizeは無料版はどれか一つの権限グループしか設定できません。
自分はまあ設定した人間だから分かりますし、自分がイベントを投稿するときもイベント投稿用アカウントでログインすればいいので。
とりあえずやりたいことはできました。

ブログランキング・にほんブログ村へ
ブログランキング参加中!
記事の内容が良かったらクリックしてくれると嬉しいですヽ(´ー`)ノ
スポンサーリンク
スポンサーリンク