LVP8
フォーラムへの返信
-
フォーラム: 使い方全般
返信が含まれるトピック: カテゴリとアーカイブについてcateory-info.php の先頭(get_header();の上)に下記コードを加えたらどうでしょう。
*未検証です。if ( is_date() ) { return get_template_part( 'archive', 'info' ); } get_header(); ?>
フォーラム: 使い方全般
返信が含まれるトピック: タグクラウドのクリック後の件数表示についてカウント数だけがほしいなら
キーワード数: <?php echo (int) $wp_query->found_posts; ?> 件
でいけますよ。
他にも取得したいものがあって自動化するなら
$tag_properties = get_queried_object();フォーラム: 使い方全般
返信が含まれるトピック: カスタム投稿タイプ フロントページの表示=>固定ページでのパーマリンカスタム投稿タイプはfunctions.php に定義したものですか?
だとしたら、register_post_type() の rewrite に ‘with_front’ => false を設定すれば、カスタム投稿タイプについた/blog/を消す事はできますよ。が、Custom Post Permalinks との兼ね合いは分かりません。
フォーラム: 使い方全般
返信が含まれるトピック: タグで管理からカスタムタクソノミーで管理に変更したときのリダイレクfunctions.php に以下のコードを
function new_taxonomy_redirect() { if ( strpos($_SERVER['REQUEST_URI'], '/tag/') === false ) return; global $wpdb; $slug = explode( '/', parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) ); $tid = $wpdb->get_var("SELECT term_id FROM $wpdb->terms WHERE slug = '$slug[2]'"); if ( $tid ) { $tax = $wpdb->get_var("SELECT taxonomy FROM $wpdb->term_taxonomy WHERE term_id = $tid"); if ( $tax != 'post_tag' ) { $red = get_option('siteurl') . '/'; $red .= get_taxonomy($tax)->rewrite['slug'] . '/' . $slug[2]; $red .= ( isset($slug[3]) ) ? str_replace('/tag/' . $slug[2], '', $_SERVER['REQUEST_URI']) : ''; wp_redirect( $red, 301 ); } } } add_filter('wp', 'new_taxonomy_redirect');
簡単な検証はしていますが…
- 必要のない余分な処理をしている可能性があります。
- もっと単純にWPの関数を利用して実現できるかもしれません。
- wp にフックさせていますが、これが適切かどうかは疑問です。
- 少なからずサイトのパフォーマンスに影響(悪い)を及ぼします。
というのをご理解ください。
なお、もしこれでpoemさんの希望通りになったとしても、コードに対する修正など、他の方からの意見を数日程度待って上で「解決済み」にしていただければと思います。フォーラム: 使い方全般
返信が含まれるトピック: タグで管理からカスタムタクソノミーで管理に変更したときのリダイレクタグのアーカイブページは、質問の最初で /tag/abc/xxx.html と記述されて、その後 /tag/abc/ になっていますがどちらが正しいですか?
例えば「aaa」というタグの場合、アーカイブページのURL はどんな形式になっていますか?
example.com/tag/aaa/
ですか? また、最後にスラッシュは付けてますか? あるいは、
example.com/archive/tag/aaa/
のように何らかの接続語がつきますか? それとも、最後に .html がつく(?)のですか?
example.com/tag/abc/xxx.htmlフォーラム: 使い方全般
返信が含まれるトピック: タグで管理からカスタムタクソノミーで管理に変更したときのリダイレク- URL に /tag/ が含まれる場合 /tag/ 以下のスラッグ部分を抜き出す
- 抜き出したスラッグの term_id を調べる
- 調べた term_id のタクソノミを調べる
- 調べたタクソノミが、タグ(post_tag)以外の場合
- タクソノミの rewrite slug を調べる
- URLに、/page/2 やクエリ(?***=*** など)が含まれていないか調べる
- URLを整形してリダイレクト
という順序で行えば可能かと思います。
/tag/ が含まれる全ての URL に対して検証を行うので、リダイレクトの必要がないタグ(post_tag)で管理しているものも含め、その都度 WP を起動して、データベースに問い合わせをする必要があります。カスタムタクソノミー管理に変更したものが数百個に及ぶ場合は別として、変更したものを抽出し、jim912さん、kvexさんが提示した方法(.htaccess)での制御の方がいいのではないかと思います。(面倒ですが)
get_terms() で .htaccess 用に書き出し、それをコピペすれば手間が省ける気がします。
Redirect permanent /tag/aaa/ http://example.com/writer/aaa/
これを変更した分だけ繰り返す。フォーラム: 使い方全般
返信が含まれるトピック: カスタム投稿でブログを作るには?アイキャッチの方ではなく、投稿欄で入力した画像が出ません
テーマは何をつかってますか?
これはブログ記事一覧(アーカイブページ)ですか?
新着情報、業務連絡、イベント情報などでは画像の表示に問題ないのですか?3の表示件数変更のためのコードをどこに書くべき
ループが始まる前なら、テーマの先頭でも、loop.phpを読み込む直前でも大丈夫です。
メニューに出す「ブログ」の飛び先URLですが、
http://*****.com/?post_type=blog特に問題はないと思います。僕はデフォルト設定(’query_var’ => true)にしています。
http://*****.com/?blog=投稿名フォーラム: 使い方全般
返信が含まれるトピック: カスタム投稿でブログを作るには?フォーラム: 使い方全般
返信が含まれるトピック: カスタム投稿でブログを作るには?-
register_post_type の最後の4行を変更
'page-attributes' ), 'has_archive' => true ) );
-
ページ「ブログ」を削除し、index-blog.php を archive-blog.php にリネームする。
(そのページを他に使い回すのなら、ページスラッグの「blog」は変更しておく) -
表示件数を変更したいなら
$loop = new WP_Query( array( ‘post_type’ => ‘blog’, ‘posts_per_page’ => 5 ) ); ぶぶんはquery_posts($query_string . ‘&posts_per_page=5’); または
query_posts(array_merge(array(‘posts_per_page’ => 5), $wp_query->query)); などで。
*ポストタイプの指定は必要なし。 -
念のためパーマリンクの更新を行う。(何も変更する必要はない)
これでページングも含め問題なく表示されると思いますy。
ポストタイプのアーカイブタイトルなどはこの辺を参考に。
http://varl.jp/note/wp-3-1-custom-post-type-settings-summaryフォーラム: 使い方全般
返信が含まれるトピック: 管理画面でnoticeが出るようになりましたadd_options_page() という関数内の第3引数に「数字」が設定されているとこのエラーが出ると思います。Notice で表示されているファイルではなく、恐らくプラグインのメインファイルにその記述があるので、プラグインを直接編集する必要があります。
Roles and Capabilitiesを参考に、数値(ユーザーレベル)を文字列(権限)に書き換えればOKなはずです。
フォーラム: 使い方全般
返信が含まれるトピック: ログイン時とそうでない時のページ生成速度の違いjim912さん アドバイスありがとうございます。
post_date(秒まで)の全く同じ投稿が、一日あたり20~30づつ、しかも4年半に渡り続いている、という状態のものでした。order orderby(共にデフォルトのまま) の処理で引っかかっていたのだと思います。
同じ post_date の中で、ログイン時は投稿IDの小さい順に、非ログイン時は投稿IDの大きい順にソートされていて、前者のほうが処理が早かった?わけです。
$wp_query の [request] を見ると、ログイン時に post_status = ‘private’ が加わっているだけなのですが、こういう違いが出るものなのでしょうか…。
結局、pre_get_posts のフックで ‘orderby’ を ‘ID’ に変えたところ、非ログイン時との差がなくなりました。
jim912さん、ヒントをいただきましてありがとうございまます。助かりました。
フォーラム: 使い方全般
返信が含まれるトピック: 投稿のナンバーを表示するフォーラム: 使い方全般
返信が含まれるトピック: 投稿のナンバーを表示するgogoweb さんのアイデアで
functions.phpに
function ps_number( $post_type = 'post', $op = '<=' ) { global $wpdb, $post; $post_type = is_array($post_type) ? implode("','", $post_type) : $post_type; $number = $wpdb->get_var(" SELECT COUNT( * ) FROM $wpdb->posts WHERE @post_date@ {$op} '{$post->post_date}' AND @post_status@ = 'publish' AND @post_type@ IN ('{$post_type}') "); return $number; }
@(6箇所)は、削除するかバッククォートに変更してください。
single.php の表示したい箇所に
<?php echo ps_number(); ?>
// デフォルトは投稿(post)だけをカウント
echo ps_number();// カスタム投稿 video だけカウント
echo ps_number( ‘video’ );// post と video(配列で指定)
echo ps_number( array( ‘post’, ‘video’ ) );// 表示している投稿タイプだけ
echo ps_number( $post->post_type );コードの正確性や安全性
完全には考慮されていません。また冗長なものになっている可能性があるのをご理解の上、
ご自身で検証いただくようお願いいたします。フォーラム: 使い方全般
返信が含まれるトピック: 固定ページで投稿記事一覧を取得したい<?php $posts = get_posts('order=DESC&orderby=date'); // ループ前 $format = get_option('date_format'); foreach ($posts as $p) : ?> mysql2date( $format, $p->post_date )
ということでしょうか…
フォーラム: 使い方全般
返信が含まれるトピック: 固定ページで投稿記事一覧を取得したいmysql2date( 'Y/m/d', $p->post_date )
など
http://codex.wordpress.org/Function_Reference/mysql2date