どーもこんにちわ!備忘録も兼ねての投稿、ナカックジャパンです。

ワードプレスのプラグインで、カスタムフィールドテンプレートってご存知ですか?
簡単に言えば、

ワードプレス画面

 

の画面が、

カスタムフィールドテンプレート
というシステムっぽくなるんですよ~!
(でも問題は投稿の追加から、特定のカテゴリを選択すると出るっていうめんどくさい作りなんですね、うんうん。)

さらにカスタム投稿という機能がwordpress3.0からあって、これは直接横のメニューバーにカスタムフィールドテンプレートのページが追加できるんですよ!

カスタムフィールド

うん、だいぶシステムっぽくなってきた!(かっちょいい)
これならお客様もお金出した甲斐があるってもんですよ!
このカスタム投稿するのに、function.phpに直接書き込む方法とプラグインの追加と二つ方法があるんですよ!

まぁすでにfunction.phpで作成しているけど、作業標準化というか誰でもカンタン目線からプラグインの「Custom Post Type UI」を導入。
これで追加完了。
カスタム投稿では分類のカスタムタクソノミーという非常に発音しにくいものとかあったり…

でもここで罠。

このカスタム投稿やカスタムタクタク…(舌を噛みました)
といったページはpost(投稿)でもpage(固定ページ)でもないので、パーマリンク設定の/%post_id%.htmlとかが効かない…
おっ、「Custom Post Type UI」プラグインの詳細設定で「カスタムリライトスラッグ」があるじゃないか!意気揚々と「/%post_id%.html」を設定すると、http://post_idのURLでページが生成される。

post_idっていう名前で作りたいんじゃない!!

サイトをググるとプラグインで「post-type-switcher」を導入すると解決した事例が…
まぁもちろん無駄だったんですが…サイト名を挙げるのはやめときます。
ちなみにプラグインの中身を見たら、まったく関係のないプラグインでした。
(その他にもいろいろ試しました。みんな結構途中であきらめてる…)

結局解決策としてはfunction.phpに

add_action(‘init’, ‘myposttype_rewrite’);
function myposttype_rewrite() {
global $wp_rewrite;
$queryarg = ‘post_type=product&p=’;
$wp_rewrite->add_rewrite_tag(‘%cpt_id%’, ‘([^/]+)’, $queryarg);
$wp_rewrite->

add_permastruct(‘product’, ‘/product/%cpt_id%.html’, false); }
add_filter(‘post_type_link’, ‘myposttype_permalink’, 1, 3);
function myposttype_permalink($post_link, $id = 0, $leavename) {
global $wp_rewrite;
$post = &get_post($id);
if ( is_wp_error( $post ) )
return $post;
$newlink = $wp_rewrite->get_extra_permastruct(‘product’);
$newlink = str_replace(“%cpt_id%”, $post->ID, $newlink);
$newlink = home_url(user_trailingslashit($newlink));
return $newlink; }

を追加して、生成しました。
ていうかfunction.phpを編集しない為に、プラグインを使ったのですが…
何という無駄!けっきょく触るじゃん!

今後はfunciton.phpを触らないように、プラグインのアップデートに大期待。
そんな無駄骨ジャパンでした!