LABE
フォーラムへの返信
-
フォーラム: 使い方全般
返信が含まれるトピック: カスタム投稿ページに表示される、特定記事についてあっています。
the_title()がループ中のある記事のタイトルを出力するように、get_the_ID()はその記事のIDを返します。
if-else 文を理解しきれていないのでしたら、WordPressのカスタマイズにはPHP言語の基本的な理解が不可欠ですので、今一度ご勉強されるべきかと思います。フォーラム: 使い方全般
返信が含まれるトピック: 記事ごとに枠で囲むときのdivタグは?その
<div>タグにclassを付ければいいと思います。
投稿ごとに、それぞれの情報を含んだクラスを付ける関数post_class()もあります。フォーラム: 使い方全般
返信が含まれるトピック: カスタム投稿ページに表示される、特定記事についてループ内では
get_the_ID()で投稿のIDが取得できますので、これと記事AのIDを比較するif文で分岐できます。<?php if ( xxx == get_the_ID() ) { // 記事Aの場合 ?> タイトル <?php } else { // それ以外の場合 ?> <a href="....">タイトル</a> <?php } ?>こんな感じで、あとは適宜補ってください。
フォーラム: 使い方全般
返信が含まれるトピック: 新着記事一覧を条件付きで表示したいpre_get_postsアクションを使い、$wp_queryに->set( 'offset', 4 )でしょうね。
新着記事一覧とのことですが、どこのアーカイブかによって書き方が多少変わってくるので、教えていただきたいです。@msio さん
have_posts()はループが終了しているかどうかを判別するだけですね。
the_poat()はループを進め、グローバル変数$postをセットし直します。フォーラム: 使い方全般
返信が含まれるトピック: 固定ページで特定のカテゴリーの投稿記事一覧を表示させるには?そもそも
get_posts()版では配列の書き方が根本的に間違っていますね。$args = array( 'category' => 2, 'post_type' => 'post', 'posts_per_page' => -1, );- 配列の要素はコンマ
,区切りです。 - 上の例では一行に一つずつ要素を書いていますが、改行しなくても構いません。
=>の左側が要素のキー、右側が要素の値です。- また、配列は
array(から書き始め、)で終わります。※別の書き方もあります
その上で、気になった点をいくつか。
get_posts()版がエラーになった原因は上記のものでしょう。真っ白のエラー画面といっても、おそらく「Syntax Error」などと行番号付きのメッセージが出ていると思われます。それでエラーの原因は特定できます。get_posts()版での引数categoryですが、こちらは現在非推奨です。代わりにcatをお使いください。get_posts()版とWP_Query版で引数が異なっていますね。どちらがあなたの意図するものなのか俺にはわかりかねますが、前者は新しい順に全件表示、後者は4件表示ですね。get_posts()とWP_Queryでは、引数$argsの形式はほぼ同じになっているので、何行かのコードの書き換えで相互に置き換えられるようになっています。WP_Query版ではget_template_part()が使われていますが、このテンプレートファイルの中身がわからないので厳密なアドバイスはできません。WP_Query版で$wp_queryという変数が使われていますが、これはグローバル変数であり、書き換えるべきではありません。$my_queryという変数をこれの代わりに使ってみましょう。3行目から9行目までを下記の「コード1」のように書き換えてみてください。WP_Query版のwp_reset_postdata();はendwhile;とendif;の間に書くのが適切です。
コード1
$args = array( 'post_type' => 'post', 'category_name' => 'lesson', 'posts_per_page'=> 4, ); $my_posts = new WP_Query( $args );フォーラム: 使い方全般
返信が含まれるトピック: 月別アーカイブなのに全件表示される本題からは逸れますが、 archive.php なのに
WP_Queryをお使いですか?
posts_per_pageで表示件数を変更しているだけと見受けられますが、その場合pre_get_postsアクションを使う方法がより効率的で一般的です。
これは functions.php に書きます。function my_pre_get_posts( $query ) { if ( is_admin() || ! $query->is_main_query() ) return; if ( ! $query->is_home() || ! $query->is_search() ) $query->set( 'posts_per_page', 10 ); } add_action( 'pre_get_posts', 'my_pre_get_posts' );ループのほうは3ヶ所の
$the_query->を抜けばOKです。また、この場合
paginate_links()のほうも書き換える必要があります。
といってもWP_Queryを使わなくなったので$the_queryをグローバル変数の$wp_queryに書き換えるというだけです。global $wp_query; if ( $wp_query->max_num_pages > 1 ) { echo paginate_links(array( 'base' => get_pagenum_link(1) . '%_%', 'format' => '/page/%#%/', 'current' => max(1, $paged), 'total' => $wp_query->max_num_pages, )); }それと
wp_reset_postdata();も不要になります。
ただ仮にWP_Queryを使う場合、wp_reset_postdata();の正しい位置はendwhile;とendif;の間ですね。フォーラム: 使い方全般
返信が含まれるトピック: 直下の子カテゴリー(ターム?)1つだけを表示したいご質問のような状況の場合、別のアプローチで実現したほうが、最終的には管理が容易になるような気がします。
すなわち、「店舗A/店舗B」と「レディースファッション」配下のカテゴリは別次元の分類となるため、WordPressにおいても別次元の分類を使って管理するほうがいいと思います。よくある方法としては、カスタムタクソノミー「店舗」を作り、配下にターム「店舗A」「店舗B」を作成、カスタムタクソノミー「レディースファッション」を作り、配下に「トップス」「ボトムス」……を作成、そして記事には「店舗」配下のタームと「レディースファッション」配下のタームをそれぞれ一つずつ設定する、というような方法があります。
そして、記事一覧は「店舗」の分類で取得し、記事部分には「レディースファッション」の分類を表示するのです。
カスタムタクソノミーを使わなくても、「店舗A」「店舗B」をカテゴリとし、「トップス」「ボトムス」……をタグとすれば、似たようなことが可能です。ご質問のような状況が起こるのは、推測ですが、お使いのテーマでは記事一覧において、記事が複数のカテゴリに属する場合、どのカテゴリを表示させるかを選べない、というのが原因ではないでしょうか。
これを選べるようにする方法はありますが、複雑な方法という感じは否めません。
それよりも、「レディースファッション」の分類を確実に表示させるなら、「店舗」とは別の分類を使ってしまおう、というアプローチです。フォーラム: 使い方全般
返信が含まれるトピック: jetpack以外のプラグインについてContact Form 7 をインストールすると管理ページのメニューに追加されるプラグインの設定で、新規フォームを作成します。
すると作ったフォームのショートコードが発行されるので、それを任意のページに記述することになります。
一度お試しになったほうがよくわかると思います。フォーラム: 使い方全般
返信が含まれるトピック: Advanced Custom Fields で制作したカスタム投稿記事を、50音順でソートWP_Queryの記述は正しいように見えます。
ですから、どのテーマファイルにお書きになったのかを知りたいのですが。
できればループ内の記述も知りたいです。フォーラム: 使い方全般
返信が含まれるトピック: faviconをページごとに変えたいfaviconは通常、テーマの header.php ファイルに
<link>タグで設定しますが、すなわち header.php において使えるあらゆる処理によって条件分岐させることで、ページごとに任意のfaviconを設定することができます。
例えばカテゴリとか、スラッグとか、カスタムフィールドとか……フォーラム: 使い方全般
返信が含まれるトピック: jetpack以外のプラグインについて@pressinfo777 さん
はい、その通りです。
逆に、ショートコードをいずれかの投稿の本文に記述しなければ、フォームはどこにも表示されません。
「お問い合わせ」といったページを作成する場合は専用のページを作り、そこにショートコードを記述することになります。
フォームは複数種類作成することもでき、また同一のフォームを複数のページに設置することもできます。フォーラム: 使い方全般
返信が含まれるトピック: Advanced Custom Fields で制作したカスタム投稿記事を、50音順でソート@ioxrxogi さん
orderは大文字に直してASCになる場合はASC、それ以外の場合はDESCとして扱われます。https://developer.wordpress.org/reference/classes/wp_query/parse_order/
フォーラム: 使い方全般
返信が含まれるトピック: jetpack以外のプラグインについてフォーラム: 使い方全般
返信が含まれるトピック: Advanced Custom Fields で制作したカスタム投稿記事を、50音順でソート一覧ページのURLが http://sample.co.jp/category/blog/page とのことですが、スラッグが「page」のカテゴリをお使いということでしょうか。
それとも固定ページでしょうか。 - 配列の要素はコンマ