WordPress Lab
投稿者ユーザー登録時に自動でユーザー専用の固定ページをつくる
2017年5月8日 月曜日(条件)
固定ページのスラッグはinfo-(ユーザー名)で、user-info_template.phpというページテンプレートを使う。
ページタイトルは「名」。
functions.php
function create_user_page ( $user_id ) { $user_info = get_userdata($user_id); $user_name = $user_info->user_login; $new_page = array( 'post_type' => 'page', 'post_title' => $user_info->first_name, 'post_name' => 'info-' . $user_name, 'post_status' => 'publish', 'post_author' => $user_id, 'page_template' => 'user-info_template.php' ); wp_insert_post($new_page); } add_action('user_register', 'create_user_page' );
ユーザーにこのページだけを編集させる制限などはUser Roll Editorなどで設定、紐付けしてください。
過日の投稿(「投稿者ユーザー登録時にユーザー名をスラッグでカテゴリーをつくる」)のコードとまとめて使うと便利です。
複数のカテゴリーに属している記事の特定の親の子カテゴリー名を表示する
2017年4月17日 月曜日複数のカテゴリーに属している記事の特定の親の子カテゴリー名を表示する
※ ただし1つの親に対して1つの子であること
<?php $categorys = get_the_category( $post_id ); foreach($categorys as $category){ if($category->parent==特定の親カテゴリーID): echo $category->name; endif; }; ?>
投稿者ユーザー登録時にユーザー名をスラッグでカテゴリーをつくる
2017年4月7日 金曜日(条件)
ユーザー名をカテゴリースラッグにする。
カテゴリー名は、ユーザー登録時の「名」。
functions.php
function create_category( $user_id ) { $user_info = get_userdata($user_id); $user_name = $user_info->user_login; $my_cat = array( 'cat_name' => $user_info->first_name, 'category_nicename' => $user_name, 'category_parent' => '' ); wp_insert_category( $my_cat ); $cat_id = get_cat_ID( $user_id ); wp_set_post_categories( $post->ID, array( $cat_id ), true ); } add_action('user_register', 'create_category' );
ユーザー登録と同時にユーザー名のカテゴリーが生成されますが、ログインユーザーがそのカテゴリーでしか投稿できないというような仕組みはAuthor Category等のプラグインで関連付けしてください。
WordPressの更新を反映させたい静的htmlのほうが別階層にあるとき、どうするの?
2016年8月10日 水曜日実際、クライアントさまの要望は個々にさまざま十人十色なので、WordPressが全盛だからといって、とくにトップページやカテゴリーのインデックス、固定ページは内容、デザイン、構成が複雑になるので、テンプレートとしてこさえるより、静的htmlでガッシリつくるほうがFTPも使える制作者サイドにすれば作りやすいし、メンテもしやすい。
でも、新着記事やらアイキャッチやら、WordPressの固有の機能をそれらに求められることは免れない。
<?php require('./wp-blog-header.php'); ?>
やら
<?php require('./wp-blog-header.php'); ?>
を静的htmlの最初の行に書いて、
.htaccessで、html上でphpが使える環境に整えればよいという情報が多いが、これはドメイン直下などのトップページでしか使えない。
おしえていただいたところによると、推奨されるのは以下の形式で
<?php require_once( dirname( __FILE__ ) . '/wp-load.php' ); ?>
カテゴリーインデックスなど、静的htmlがWordPressと異なる階層にある場合は
<?php require_once( dirname(dirname( __FILE__ )) . '/wp-load.php' ); ?>
など、階層数により
dirname(dirname(dirname( __FILE__ ))) と、dirnameを重ねて調整すればよいらしい。
(参考) wordpress関数を外から使うにはwp_load.phpを読み込む | hellooooworld.com
外注のカスタム投稿タイプのパーマリンク設定
2016年8月4日 木曜日外注のカスタム投稿タイプの「カテゴリー名」を変えたら”自動転送ループ”になってしまって、どうしたらよいかたずねたら「パーマリンク設定が post_id になってるか?」というのです。
本体のパーマリンク設定は post_id になっているけれど、カスタム投稿タイプの記事はpostnameのようだが、どこで変えるのや?と思ったら、
そういうことを可能にするプラグインがあるんですね。
正常化したけれど、そもそもなんで今まで何の支障もなかったのやろ・・・?