WordPress の新規投稿時に URLパラメーター を使ってカテゴリ、タグを追加済みにする方法。
タイトル、コンテンツは標準の機能で渡すことができる。
やりたいこと
https://example.com/wp-admin/post-new.php?post_title=タイトル&category=3&term=wiki
上記のURLを開くとカテゴリID「10」のカテゴリを選択、タグ:「wiki」も追加済みで編集画面をだす。
パラメータ | 説明 |
post_title | タイトル |
content | コンテンツ |
excerpt | 抜粋 |
パラメータ | 説明 |
category | カテゴリーID |
term | タグ名 |
流れ
WP_Post が作成され編集画面に渡される前にカテゴリ、タグを選択済みにしたいので get_default_post_to_edit 内の default_content
にフックさせカテゴリ、タグを追加する。
WordPress/post.php at master · WordPress/WordPress
コード
/**
* default_terms
* @param string $post_content
* @param WP_Post $post
* @return string
*/
function default_terms($post_content,$post)
{
if( $post->post_type == 'post' ){
if ( ! empty( $_REQUEST['category'] ) ) {
$post_categoryID = (int)esc_html( wp_unslash( $_REQUEST['category'] ) );
$post_category[] = $post_categoryID;
wp_set_post_categories( $post->ID, $post_category, false);
}
if ( ! empty( $_REQUEST['term'] ) ) {
$post_term = esc_html( wp_unslash( $_REQUEST['term'] ) );
$terms[] = $post_term;
wp_set_post_terms($post->ID, $terms, 'post_tag',false );
}
}
return $post_content;
}
add_filter( 'default_content', 'default_terms',10, 3 );
上記コードを functions.phpに追加する。
編集画面
これでpost-new.phpにパラメータをつけて開くとカテゴリ、タグが入った状態で編集画面が開く
注意点
タグIDでのセット、カテゴリ・タグともに複数セットは対応していません
他に良いやり方があるよなどコメントください
参考リンク
- 【WordPress】投稿にデフォルトのタイトル・本文を設定する例
- 関数リファレンス/wp set post terms – WordPress Codex 日本語版
- 関数リファレンス/wp set post categories – WordPress Codex 日本語版