カテゴリー
コンピュータ

WordPressでカテゴリ、タグを選択済みにする

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に追加する。

編集画面

WordPressデフォルトカテゴリー、タグ
WordPressデフォルトカテゴリー、タグ

これでpost-new.phpにパラメータをつけて開くとカテゴリ、タグが入った状態で編集画面が開く

注意点

タグIDでのセット、カテゴリ・タグともに複数セットは対応していません 

他に良いやり方があるよなどコメントください

参考リンク

コメントを残す