<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>WP_Query &#8211; ケケンタの独学ITブログ</title>
	<atom:link href="https://kekenta-it-blog.com/tag/wp_query/feed/" rel="self" type="application/rss+xml" />
	<link>https://kekenta-it-blog.com</link>
	<description>プログラミングやWeb制作の情報を発信</description>
	<lastBuildDate>Tue, 18 Mar 2025 02:07:34 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://kekenta-it-blog.com/wp-content/uploads/2023/07/cropped-KEKENTA-BLOG-32x32.png</url>
	<title>WP_Query &#8211; ケケンタの独学ITブログ</title>
	<link>https://kekenta-it-blog.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【WordPress】WP_Queryなどのサブループ内で投稿タイプを判定する方法</title>
		<link>https://kekenta-it-blog.com/wp-subloop-posttype-condition/</link>
					<comments>https://kekenta-it-blog.com/wp-subloop-posttype-condition/#respond</comments>
		
		<dc:creator><![CDATA[ケケンタ]]></dc:creator>
		<pubDate>Thu, 31 Oct 2024 23:19:08 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[get_post_type]]></category>
		<category><![CDATA[WP_Query]]></category>
		<category><![CDATA[サブループ]]></category>
		<category><![CDATA[条件分岐タグ]]></category>
		<guid isPermaLink="false">https://kekenta-it-blog.com/?p=12218</guid>

					<description><![CDATA[<p><img src="https://kekenta-it-blog.com/wp-content/uploads/2024/11/eye-catch__wp-subloop-posttype-condition__12218-1024x576.jpg" class="webfeedsFeaturedVisual" /></p>この記事では WordPressのサブループ内で記事の投稿タイプを判定して条件分岐する方法 をご紹介します。 サブループを回すときはWP_Queryなどの仕組みを使用します。 そこで複数の投稿タイプの記事を取得する場合に [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://kekenta-it-blog.com/wp-content/uploads/2024/11/eye-catch__wp-subloop-posttype-condition__12218-1024x576.jpg" class="webfeedsFeaturedVisual" /></p>
<p class="wp-block-paragraph">この記事では</p>



<p class="has-text-align-center is-style-big_kakko_box wp-block-paragraph"><strong><span class="swl-marker mark_yellow">WordPressのサブループ内で</span></strong><br><strong><span class="swl-marker mark_yellow">記事の<span class="swl-inline-color has-swl-deep-02-color">投稿タイプ</span>を判定して条件分岐する方法</span></strong></p>



<p class="wp-block-paragraph">をご紹介します。</p>



<p class="wp-block-paragraph">サブループを回すときはWP_Queryなどの仕組みを使用します。</p>



<p class="wp-block-paragraph">そこで<strong>複数の投稿タイプの記事を取得する場合</strong>に、今回ご紹介する方法が有効です。</p>



<p class="is-style-balloon_box2 wp-block-paragraph">WP_Queryについて詳しく知りたい方は<a href="https://kekenta-it-blog.com/wp-subloop-wq/">こちらの記事</a>をご覧ください。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type2" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://kekenta-it-blog.com/wp-content/uploads/2024/07/eye-catch__wp-subloop-wq__9158-300x169.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://kekenta-it-blog.com/wp-subloop-wq/">【WordPress】WP_Query（サブループ）の使い方とパラメータ一覧を紹介</a>
						<span class="p-blogCard__excerpt">WordPressでサイト制作をしているとメインの記事一覧以外に「別の記事一覧も出力したい！」となることが多々あります。 今回はそこで深く関係してくるメインループ、サ&#8230;</span>					</div>
				</div>
			</div>
		</div>

<div class="swell-block-postLink">			<a href="https://kekenta-it-blog.com/wp-edit-functions/" class="c-blogLink -internal" data-style="text">
				<!-- <i class="c-blogLink__icon icon-link" role="presentation"></i> -->
				<span class="c-blogLink__icon">
					<svg xmlns="http://www.w3.org/2000/svg" class="swl-svg-link __svg" width="1em" height="1em" viewBox="0 0 48 48" role="img" aria-hidden="true" focusable="false"><path d="M21.2 30.2c-.5 0-1-.2-1.4-.6l-.7-.7c-2.3-2.3-3.5-5.3-3.5-8.5s1.2-6.2 3.5-8.5l7.1-7.1c2.3-2.3 5.3-3.5 8.5-3.5s6.2 1.2 8.5 3.5c4.7 4.7 4.7 12.3 0 17l-3.5 3.5c-.8.8-2 .8-2.8 0-.8-.8-.8-2 0-2.8l3.5-3.5c3.1-3.1 3.1-8.2 0-11.3-1.5-1.5-3.5-2.3-5.7-2.3-2.1 0-4.2.8-5.7 2.3l-7.1 7.1c-1.5 1.5-2.3 3.5-2.3 5.7s.8 4.2 2.3 5.7l.7.7c.8.8.8 2 0 2.8-.4.3-.9.5-1.4.5z" /><path d="M13.4 46.6c-3.1 0-6.1-1.2-8.5-3.5-2.3-2.3-3.5-5.3-3.5-8.5s1.2-6.2 3.5-8.5l3.5-3.5c.8-.8 2-.8 2.8 0 .8.8.8 2 0 2.8l-3.5 3.5c-1.5 1.5-2.3 3.5-2.3 5.7 0 2.1.8 4.2 2.3 5.7 3.1 3.1 8.2 3.1 11.3 0l7.1-7.1c1.5-1.5 2.3-3.5 2.3-5.7 0-2.1-.8-4.2-2.3-5.7l-.7-.7c-.8-.8-.8-2 0-2.8.8-.8 2-.8 2.8 0l.7.7c2.3 2.3 3.5 5.3 3.5 8.5s-1.2 6.2-3.5 8.5l-7.1 7.1c-2.3 2.3-5.3 3.5-8.4 3.5z" /></svg>				</span>
				<span class="c-blogLink__text">【WordPress】functions.phpを編集する「３つ」の方法と編集時の注意点</span>
			</a>
		</div>

<div class="swell-block-postLink">			<a href="https://kekenta-it-blog.com/wp-how-to-load-js/" class="c-blogLink -internal" data-style="text">
				<!-- <i class="c-blogLink__icon icon-link" role="presentation"></i> -->
				<span class="c-blogLink__icon">
					<svg xmlns="http://www.w3.org/2000/svg" class="swl-svg-link __svg" width="1em" height="1em" viewBox="0 0 48 48" role="img" aria-hidden="true" focusable="false"><path d="M21.2 30.2c-.5 0-1-.2-1.4-.6l-.7-.7c-2.3-2.3-3.5-5.3-3.5-8.5s1.2-6.2 3.5-8.5l7.1-7.1c2.3-2.3 5.3-3.5 8.5-3.5s6.2 1.2 8.5 3.5c4.7 4.7 4.7 12.3 0 17l-3.5 3.5c-.8.8-2 .8-2.8 0-.8-.8-.8-2 0-2.8l3.5-3.5c3.1-3.1 3.1-8.2 0-11.3-1.5-1.5-3.5-2.3-5.7-2.3-2.1 0-4.2.8-5.7 2.3l-7.1 7.1c-1.5 1.5-2.3 3.5-2.3 5.7s.8 4.2 2.3 5.7l.7.7c.8.8.8 2 0 2.8-.4.3-.9.5-1.4.5z" /><path d="M13.4 46.6c-3.1 0-6.1-1.2-8.5-3.5-2.3-2.3-3.5-5.3-3.5-8.5s1.2-6.2 3.5-8.5l3.5-3.5c.8-.8 2-.8 2.8 0 .8.8.8 2 0 2.8l-3.5 3.5c-1.5 1.5-2.3 3.5-2.3 5.7 0 2.1.8 4.2 2.3 5.7 3.1 3.1 8.2 3.1 11.3 0l7.1-7.1c1.5-1.5 2.3-3.5 2.3-5.7 0-2.1-.8-4.2-2.3-5.7l-.7-.7c-.8-.8-.8-2 0-2.8.8-.8 2-.8 2.8 0l.7.7c2.3 2.3 3.5 5.3 3.5 8.5s-1.2 6.2-3.5 8.5l-7.1 7.1c-2.3 2.3-5.3 3.5-8.4 3.5z" /></svg>				</span>
				<span class="c-blogLink__text">【WordPress】JavaScriptはどこに書けばいい？「３つの方法」を解説</span>
			</a>
		</div>

<div class="swell-block-postLink">			<a href="https://kekenta-it-blog.com/change-to-swell/" class="c-blogLink -internal" data-style="text">
				<!-- <i class="c-blogLink__icon icon-link" role="presentation"></i> -->
				<span class="c-blogLink__icon">
					<svg xmlns="http://www.w3.org/2000/svg" class="swl-svg-link __svg" width="1em" height="1em" viewBox="0 0 48 48" role="img" aria-hidden="true" focusable="false"><path d="M21.2 30.2c-.5 0-1-.2-1.4-.6l-.7-.7c-2.3-2.3-3.5-5.3-3.5-8.5s1.2-6.2 3.5-8.5l7.1-7.1c2.3-2.3 5.3-3.5 8.5-3.5s6.2 1.2 8.5 3.5c4.7 4.7 4.7 12.3 0 17l-3.5 3.5c-.8.8-2 .8-2.8 0-.8-.8-.8-2 0-2.8l3.5-3.5c3.1-3.1 3.1-8.2 0-11.3-1.5-1.5-3.5-2.3-5.7-2.3-2.1 0-4.2.8-5.7 2.3l-7.1 7.1c-1.5 1.5-2.3 3.5-2.3 5.7s.8 4.2 2.3 5.7l.7.7c.8.8.8 2 0 2.8-.4.3-.9.5-1.4.5z" /><path d="M13.4 46.6c-3.1 0-6.1-1.2-8.5-3.5-2.3-2.3-3.5-5.3-3.5-8.5s1.2-6.2 3.5-8.5l3.5-3.5c.8-.8 2-.8 2.8 0 .8.8.8 2 0 2.8l-3.5 3.5c-1.5 1.5-2.3 3.5-2.3 5.7 0 2.1.8 4.2 2.3 5.7 3.1 3.1 8.2 3.1 11.3 0l7.1-7.1c1.5-1.5 2.3-3.5 2.3-5.7 0-2.1-.8-4.2-2.3-5.7l-.7-.7c-.8-.8-.8-2 0-2.8.8-.8 2-.8 2.8 0l.7.7c2.3 2.3 3.5 5.3 3.5 8.5s-1.2 6.2-3.5 8.5l-7.1 7.1c-2.3 2.3-5.3 3.5-8.4 3.5z" /></svg>				</span>
				<span class="c-blogLink__text">無料テーマCocoonからSWELLに乗り換えた７つの理由【WordPress】</span>
			</a>
		</div>

<div class="swell-block-postLink">			<a href="https://kekenta-it-blog.com/school-php-and-wp/" class="c-blogLink -internal" data-style="text">
				<!-- <i class="c-blogLink__icon icon-link" role="presentation"></i> -->
				<span class="c-blogLink__icon">
					<svg xmlns="http://www.w3.org/2000/svg" class="swl-svg-link __svg" width="1em" height="1em" viewBox="0 0 48 48" role="img" aria-hidden="true" focusable="false"><path d="M21.2 30.2c-.5 0-1-.2-1.4-.6l-.7-.7c-2.3-2.3-3.5-5.3-3.5-8.5s1.2-6.2 3.5-8.5l7.1-7.1c2.3-2.3 5.3-3.5 8.5-3.5s6.2 1.2 8.5 3.5c4.7 4.7 4.7 12.3 0 17l-3.5 3.5c-.8.8-2 .8-2.8 0-.8-.8-.8-2 0-2.8l3.5-3.5c3.1-3.1 3.1-8.2 0-11.3-1.5-1.5-3.5-2.3-5.7-2.3-2.1 0-4.2.8-5.7 2.3l-7.1 7.1c-1.5 1.5-2.3 3.5-2.3 5.7s.8 4.2 2.3 5.7l.7.7c.8.8.8 2 0 2.8-.4.3-.9.5-1.4.5z" /><path d="M13.4 46.6c-3.1 0-6.1-1.2-8.5-3.5-2.3-2.3-3.5-5.3-3.5-8.5s1.2-6.2 3.5-8.5l3.5-3.5c.8-.8 2-.8 2.8 0 .8.8.8 2 0 2.8l-3.5 3.5c-1.5 1.5-2.3 3.5-2.3 5.7 0 2.1.8 4.2 2.3 5.7 3.1 3.1 8.2 3.1 11.3 0l7.1-7.1c1.5-1.5 2.3-3.5 2.3-5.7 0-2.1-.8-4.2-2.3-5.7l-.7-.7c-.8-.8-.8-2 0-2.8.8-.8 2-.8 2.8 0l.7.7c2.3 2.3 3.5 5.3 3.5 8.5s-1.2 6.2-3.5 8.5l-7.1 7.1c-2.3 2.3-5.3 3.5-8.4 3.5z" /></svg>				</span>
				<span class="c-blogLink__text">PHPやWordPressを学ぶのにおすすめのプログラミングスクール【７選】</span>
			</a>
		</div>


<h2 class="wp-block-heading">【結論】WP_Queryなどのサブループ内で投稿タイプを判定する方法</h2>



<p class="is-style-bg_stripe wp-block-paragraph">サブループ内で記事の投稿タイプを取得するには<code><strong>get_post_type()</strong></code>を使用します。</p>



<div class="swell-block-capbox cap_box" data-colset="col1"><div class="cap_box_ttl"><span><span data-icon="LsLightbulb" data-id="0" style="--the-icon-svg: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjFlbSIgd2lkdGg9IjFlbSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgdmlld0JveD0iMCAwIDQ4IDQ4Ij48cGF0aCBkPSJNMzIgNDYuNUgxNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTJoMTZjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyek00MS43IDE1LjlDNDEuMyAxMyA0MCAxMC4zIDM4LjIgOCAzNC41IDMuMiAyOSAuOCAyMy4xIDEgMTQgMS40IDYuNSA4LjkgNiAxOGMtLjMgNiAyLjQgMTEuNyA3LjIgMTUuNC41LjQuOC45LjggMS41djEuNmMwIDIuMiAxLjggNCA0IDRoMTJjMi4yIDAgNC0xLjggNC00VjM1YzAtLjYuMy0xLjIuOS0xLjcgNS4zLTQgOC0xMC42IDYuOC0xNy40em0tNy4xIDEuN2gtLjNjLS43IDAtMS4zLS41LTEuNS0xLjItLjctMy4yLTMuMi01LjctNi40LTYuMy0uOC0uMS0xLjQtLjktMS4yLTEuN3MuOS0xLjQgMS43LTEuMmM0LjQuOCA4IDQuMiA4LjkgOC42LjEuOC0uNCAxLjYtMS4yIDEuOHoiPjwvcGF0aD48L3N2Zz4=)" aria-hidden="true" class="swl-inline-icon"> </span><strong>get_post_type()とは？</strong></span></div><div class="cap_box_content">
<p class="wp-block-paragraph"><code>get_post_type()</code>は「現在の記事の投稿タイプ」や「引数で指定した記事の投稿タイプ」を取得可能なテンプレートタグです。</p>



<p class="wp-block-paragraph">サブループ内で使用することにより、「ループ内で出力中の記事の投稿タイプ」も取得することができます。</p>
</div></div>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP" data-line="12-20"><code>&lt;?php
    $args = [
        &#39;post_type&#39; =&gt; array( &#39;foo-type&#39;,&#39;bar-type&#39; ), // 複数の投稿タイプを指定するときは配列を使用
    ];
    $wq = new WP_Query( $args );
?&gt;

&lt;!-- ループ開始 --&gt;
&lt;?php if ( $wq-&gt;have_posts() ) :
    while ( $wq-&gt;have_posts() ) : $wq-&gt;the_post(); ?&gt;
        &lt;?php if ( get_post_type() === &#39;foo-type&#39; ): ?&gt;

            // 投稿タイプ「foo-type」の記事ならこの中の処理を実行

        &lt;?php elseif ( get_post_type() === &#39;bar-type&#39; ): ?&gt;

            // 投稿タイプ「bar-type」の記事ならこの中の処理を実行
            
        &lt;?php endif: ?&gt;

        // ここの処理はすべての記事で実行

    &lt;?php endwhile ?&gt;
&lt;?php endif ?&gt;
&lt;!-- ループ終了 --&gt;

&lt;?php wp_reset_postdata(); ?&gt;</code></pre></div>



<p class="wp-block-paragraph">このように記述することで、投稿タイプが「foo-type」のときと「bar-type」のときとで処理の内容を条件分岐することが可能です。</p>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript><span class="c-balloon__iconName">ケケンタ</span></div><div class="c-balloon__body -speaking -border-on"><div class="c-balloon__text">
<p>あまり多くないケースかもしれませんが、「ページ構成は同じだけど、部分的に出力したい内容が異なる場合」などに重宝します！</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<h2 class="wp-block-heading">まとめ</h2>



<p class="wp-block-paragraph">以上が<strong><span class="swl-marker mark_yellow">WordPressのサブループ内で記事の投稿タイプを判定して条件分岐する方法</span></strong>でした。</p>



<p class="wp-block-paragraph">あまり多いケースではないかもしれませんが、複数の投稿タイプの記事をサブループで出力したいときに、今回ご紹介した方法が役立ちます。</p>



<p class="wp-block-paragraph">特にページ構成が同じで、部分的に出力内容が異なるようなシチュエーションで重宝しますので、ぜひご活用いただければと思います。</p>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript><span class="c-balloon__iconName">ケケンタ</span></div><div class="c-balloon__body -speaking -border-on"><div class="c-balloon__text">
<p>それでは、最後までご覧いただきありがとうございました！</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<p class="wp-block-paragraph">当ブログではWordPressやWeb制作、PHPに関する情報を発信しています。</p>



<p class="wp-block-paragraph">ご興味のある方はほかの記事もご覧いただけるとうれしいです！</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type2" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://kekenta-it-blog.com/wp-content/uploads/2024/07/eye-catch__wp-subloop-wq__9158-300x169.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://kekenta-it-blog.com/wp-subloop-wq/">【WordPress】WP_Query（サブループ）の使い方とパラメータ一覧を紹介</a>
						<span class="p-blogCard__excerpt">WordPressでサイト制作をしているとメインの記事一覧以外に「別の記事一覧も出力したい！」となることが多々あります。 今回はそこで深く関係してくるメインループ、サ&#8230;</span>					</div>
				</div>
			</div>
		</div>

<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type2" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://kekenta-it-blog.com/wp-content/uploads/2024/07/eye-catch__wp-temptag-ispage__8933-300x169.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://kekenta-it-blog.com/wp-temptag-ispage/">【WordPress】is_page？条件分岐タグって？分かりやすく解説！</a>
						<span class="p-blogCard__excerpt">WordPressには「テンプレートタグ」という、プログラミング言語で言うところの「関数」が多数用意されています。 今回はその中でも比較的使用頻度が高いis_page()につい&#8230;</span>					</div>
				</div>
			</div>
		</div>]]></content:encoded>
					
					<wfw:commentRss>https://kekenta-it-blog.com/wp-subloop-posttype-condition/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【WordPress】WP_Query（サブループ）の使い方とパラメータ一覧を紹介</title>
		<link>https://kekenta-it-blog.com/wp-subloop-wq/</link>
					<comments>https://kekenta-it-blog.com/wp-subloop-wq/#respond</comments>
		
		<dc:creator><![CDATA[ケケンタ]]></dc:creator>
		<pubDate>Sun, 14 Jul 2024 01:48:42 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WP_Query]]></category>
		<category><![CDATA[サブループ]]></category>
		<category><![CDATA[メインループ]]></category>
		<guid isPermaLink="false">https://kekenta-it-blog.com/?p=9158</guid>

					<description><![CDATA[<p><img src="https://kekenta-it-blog.com/wp-content/uploads/2024/07/eye-catch__wp-subloop-wq__9158-1024x576.jpg" class="webfeedsFeaturedVisual" /></p>WordPressでサイト制作をしているとメインの記事一覧以外に「別の記事一覧も出力したい！」となることが多々あります。 今回はそこで深く関係してくるメインループ、サブループ、WP_Queryについて解説をします。 とり [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://kekenta-it-blog.com/wp-content/uploads/2024/07/eye-catch__wp-subloop-wq__9158-1024x576.jpg" class="webfeedsFeaturedVisual" /></p>
<p class="wp-block-paragraph">WordPressでサイト制作をしているとメインの記事一覧以外に「別の記事一覧も出力したい！」となることが多々あります。</p>



<p class="wp-block-paragraph">今回はそこで深く関係してくる<span class="swl-marker mark_yellow"><strong>メインループ</strong>、<strong>サブループ</strong>、<strong>WP_Query</strong></span>について解説をします。</p>



<div class="swell-block-capbox cap_box is-style-shadow"><div class="cap_box_ttl"><span><span style="--the-icon-svg: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjFlbSIgd2lkdGg9IjFlbSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgdmlld0JveD0iMCAwIDQ4IDQ4Ij48cGF0aCBkPSJNMzIgNDYuNUgxNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTJoMTZjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyek00MS43IDE1LjlDNDEuMyAxMyA0MCAxMC4zIDM4LjIgOCAzNC41IDMuMiAyOSAuOCAyMy4xIDEgMTQgMS40IDYuNSA4LjkgNiAxOGMtLjMgNiAyLjQgMTEuNyA3LjIgMTUuNC41LjQuOC45LjggMS41djEuNmMwIDIuMiAxLjggNCA0IDRoMTJjMi4yIDAgNC0xLjggNC00VjM1YzAtLjYuMy0xLjIuOS0xLjcgNS4zLTQgOC0xMC42IDYuOC0xNy40em0tNy4xIDEuN2gtLjNjLS43IDAtMS4zLS41LTEuNS0xLjItLjctMy4yLTMuMi01LjctNi40LTYuMy0uOC0uMS0xLjQtLjktMS4yLTEuN3MuOS0xLjQgMS43LTEuMmM0LjQuOCA4IDQuMiA4LjkgOC42LjEuOC0uNCAxLjYtMS4yIDEuOHoiPjwvcGF0aD48L3N2Zz4=)" data-icon="LsLightbulb" data-id="0" aria-hidden="true" class="swl-inline-icon">  </span><strong>この記事で分かること</strong></span></div><div class="cap_box_content">
<ul class="wp-block-list is-style-check_list -list-under-dashed">
<li>WordPressが記事一覧を出力する仕組み（メインループ）</li>



<li>WordPressで「メインの記事一覧以外」にも記事一覧を出力する方法（サブループ）</li>



<li>WP_Queryの使い方</li>



<li>WP_Queryで使用可能なパラメータ一覧</li>
</ul>
</div></div>



<p class="is-style-icon_pen wp-block-paragraph">とりあえず「WP_Queryの使い方（書き方）が分かればいいよ」という方は<a href="#wp-basic-method-anc">こちらの章</a>からご覧ください。</p>


<div class="swell-block-postLink">			<a href="https://kekenta-it-blog.com/wp-edit-functions/" class="c-blogLink -internal" data-style="text">
				<!-- <i class="c-blogLink__icon icon-link" role="presentation"></i> -->
				<span class="c-blogLink__icon">
					<svg xmlns="http://www.w3.org/2000/svg" class="swl-svg-link __svg" width="1em" height="1em" viewBox="0 0 48 48" role="img" aria-hidden="true" focusable="false"><path d="M21.2 30.2c-.5 0-1-.2-1.4-.6l-.7-.7c-2.3-2.3-3.5-5.3-3.5-8.5s1.2-6.2 3.5-8.5l7.1-7.1c2.3-2.3 5.3-3.5 8.5-3.5s6.2 1.2 8.5 3.5c4.7 4.7 4.7 12.3 0 17l-3.5 3.5c-.8.8-2 .8-2.8 0-.8-.8-.8-2 0-2.8l3.5-3.5c3.1-3.1 3.1-8.2 0-11.3-1.5-1.5-3.5-2.3-5.7-2.3-2.1 0-4.2.8-5.7 2.3l-7.1 7.1c-1.5 1.5-2.3 3.5-2.3 5.7s.8 4.2 2.3 5.7l.7.7c.8.8.8 2 0 2.8-.4.3-.9.5-1.4.5z" /><path d="M13.4 46.6c-3.1 0-6.1-1.2-8.5-3.5-2.3-2.3-3.5-5.3-3.5-8.5s1.2-6.2 3.5-8.5l3.5-3.5c.8-.8 2-.8 2.8 0 .8.8.8 2 0 2.8l-3.5 3.5c-1.5 1.5-2.3 3.5-2.3 5.7 0 2.1.8 4.2 2.3 5.7 3.1 3.1 8.2 3.1 11.3 0l7.1-7.1c1.5-1.5 2.3-3.5 2.3-5.7 0-2.1-.8-4.2-2.3-5.7l-.7-.7c-.8-.8-.8-2 0-2.8.8-.8 2-.8 2.8 0l.7.7c2.3 2.3 3.5 5.3 3.5 8.5s-1.2 6.2-3.5 8.5l-7.1 7.1c-2.3 2.3-5.3 3.5-8.4 3.5z" /></svg>				</span>
				<span class="c-blogLink__text">【WordPress】functions.phpを編集する「３つ」の方法と編集時の注意点</span>
			</a>
		</div>

<div class="swell-block-postLink">			<a href="https://kekenta-it-blog.com/wp-how-to-load-js/" class="c-blogLink -internal" data-style="text">
				<!-- <i class="c-blogLink__icon icon-link" role="presentation"></i> -->
				<span class="c-blogLink__icon">
					<svg xmlns="http://www.w3.org/2000/svg" class="swl-svg-link __svg" width="1em" height="1em" viewBox="0 0 48 48" role="img" aria-hidden="true" focusable="false"><path d="M21.2 30.2c-.5 0-1-.2-1.4-.6l-.7-.7c-2.3-2.3-3.5-5.3-3.5-8.5s1.2-6.2 3.5-8.5l7.1-7.1c2.3-2.3 5.3-3.5 8.5-3.5s6.2 1.2 8.5 3.5c4.7 4.7 4.7 12.3 0 17l-3.5 3.5c-.8.8-2 .8-2.8 0-.8-.8-.8-2 0-2.8l3.5-3.5c3.1-3.1 3.1-8.2 0-11.3-1.5-1.5-3.5-2.3-5.7-2.3-2.1 0-4.2.8-5.7 2.3l-7.1 7.1c-1.5 1.5-2.3 3.5-2.3 5.7s.8 4.2 2.3 5.7l.7.7c.8.8.8 2 0 2.8-.4.3-.9.5-1.4.5z" /><path d="M13.4 46.6c-3.1 0-6.1-1.2-8.5-3.5-2.3-2.3-3.5-5.3-3.5-8.5s1.2-6.2 3.5-8.5l3.5-3.5c.8-.8 2-.8 2.8 0 .8.8.8 2 0 2.8l-3.5 3.5c-1.5 1.5-2.3 3.5-2.3 5.7 0 2.1.8 4.2 2.3 5.7 3.1 3.1 8.2 3.1 11.3 0l7.1-7.1c1.5-1.5 2.3-3.5 2.3-5.7 0-2.1-.8-4.2-2.3-5.7l-.7-.7c-.8-.8-.8-2 0-2.8.8-.8 2-.8 2.8 0l.7.7c2.3 2.3 3.5 5.3 3.5 8.5s-1.2 6.2-3.5 8.5l-7.1 7.1c-2.3 2.3-5.3 3.5-8.4 3.5z" /></svg>				</span>
				<span class="c-blogLink__text">【WordPress】JavaScriptはどこに書けばいい？「３つの方法」を解説</span>
			</a>
		</div>

<div class="swell-block-postLink">			<a href="https://kekenta-it-blog.com/change-to-swell/" class="c-blogLink -internal" data-style="text">
				<!-- <i class="c-blogLink__icon icon-link" role="presentation"></i> -->
				<span class="c-blogLink__icon">
					<svg xmlns="http://www.w3.org/2000/svg" class="swl-svg-link __svg" width="1em" height="1em" viewBox="0 0 48 48" role="img" aria-hidden="true" focusable="false"><path d="M21.2 30.2c-.5 0-1-.2-1.4-.6l-.7-.7c-2.3-2.3-3.5-5.3-3.5-8.5s1.2-6.2 3.5-8.5l7.1-7.1c2.3-2.3 5.3-3.5 8.5-3.5s6.2 1.2 8.5 3.5c4.7 4.7 4.7 12.3 0 17l-3.5 3.5c-.8.8-2 .8-2.8 0-.8-.8-.8-2 0-2.8l3.5-3.5c3.1-3.1 3.1-8.2 0-11.3-1.5-1.5-3.5-2.3-5.7-2.3-2.1 0-4.2.8-5.7 2.3l-7.1 7.1c-1.5 1.5-2.3 3.5-2.3 5.7s.8 4.2 2.3 5.7l.7.7c.8.8.8 2 0 2.8-.4.3-.9.5-1.4.5z" /><path d="M13.4 46.6c-3.1 0-6.1-1.2-8.5-3.5-2.3-2.3-3.5-5.3-3.5-8.5s1.2-6.2 3.5-8.5l3.5-3.5c.8-.8 2-.8 2.8 0 .8.8.8 2 0 2.8l-3.5 3.5c-1.5 1.5-2.3 3.5-2.3 5.7 0 2.1.8 4.2 2.3 5.7 3.1 3.1 8.2 3.1 11.3 0l7.1-7.1c1.5-1.5 2.3-3.5 2.3-5.7 0-2.1-.8-4.2-2.3-5.7l-.7-.7c-.8-.8-.8-2 0-2.8.8-.8 2-.8 2.8 0l.7.7c2.3 2.3 3.5 5.3 3.5 8.5s-1.2 6.2-3.5 8.5l-7.1 7.1c-2.3 2.3-5.3 3.5-8.4 3.5z" /></svg>				</span>
				<span class="c-blogLink__text">無料テーマCocoonからSWELLに乗り換えた７つの理由【WordPress】</span>
			</a>
		</div>

<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type2" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://kekenta-it-blog.com/wp-content/uploads/2025/03/eye-catch__school-php-and-wp__14099-300x169.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://kekenta-it-blog.com/school-php-and-wp/">PHPやWordPressを学ぶのにおすすめのプログラミングスクール【７選】</a>
						<span class="p-blogCard__excerpt">僕はこれまで独学でPHPを学習してきました。結論から言えば、それでもPHPを習得することはできました。 しかし、それに費やした累計学習期間は1年ほど。モチベーション&#8230;</span>					</div>
				</div>
			</div>
		</div>


<h2 class="wp-block-heading">WordPressが記事一覧を出力する仕組み（メインループ）</h2>



<p class="wp-block-paragraph">まずは大前提となる</p>



<p class="has-text-align-center is-style-big_kakko_box wp-block-paragraph"><strong>そもそもWordPressがどうやって</strong><br><strong>「一覧ページ」や「個別ページ」などの記事情報を出力しているのか</strong></p>



<p class="wp-block-paragraph">という部分について簡単に解説をします。</p>



<h3 class="wp-block-heading">WordPressではURLを元にデータベースから記事情報を自動取得している</h3>



<p class="is-style-bg_stripe wp-block-paragraph">WordPressでは、<strong>URL情報を元にデータベースから記事情報を取得して、それを各ページに出力する仕組み</strong>になっています。</p>



<p class="wp-block-paragraph">具体的には<strong>以下のような流れ</strong>で記事情報を取得→出力しています。</p>



<div class="swell-block-capbox cap_box"><div class="cap_box_ttl"><span>WordPressが記事を出力する流れ</span></div><div class="cap_box_content">
<ul class="wp-block-list is-style-num_circle -list-under-dashed">
<li>ユーザーが何らかのページにアクセスする</li>



<li>WordPressがURLを参照する</li>



<li>URLの内容を元に「これは投稿ページか」「これはカテゴリーページか」などページ種別を判断する</li>



<li>判断した内容を元にデータベースから記事情報を取得する<br>※取得した情報は<strong>グルーバル変数</strong>に格納される</li>



<li>④と同時に、ページの種類に応じたテンプレートファイル（front-page.phpやsingle.phpなど）を選択する</li>



<li>⑤で選択されたテンプレートファイル内に記述されているテンプレートタグ（the_title()など）によって記事情報が出力される</li>
</ul>
</div></div>



<p class="wp-block-paragraph">この記事をご覧になっている方は、恐らくテーマのカスタマイズやオリジナルテーマ制作など、何らかの形でWordPressのテンプレートファイルを編集している方かと思われます。</p>



<p class="wp-block-paragraph">それを踏まえた上で、</p>



<p class="wp-block-paragraph">以下のような記述をテンプレートファイル内で見かける、あるいは使用したことはないでしょうか？</p>



<p class="has-text-align-center is-style-balloon_box wp-block-paragraph">テンプレートファイルでよく見かけるメインループの記述</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>if ( have_posts() ):
    while ( have_posts() ) : the_post();

    // コンテンツの表示処理（the_title()など） 

    endwhile;
endif;</code></pre></div>



<p class="wp-block-paragraph">これが実は、先ほどの「WordPressが記事を出力する流れ」で出てきた⑥に該当する処理になっています。</p>



<p class="is-style-icon_pen wp-block-paragraph">固定ページや投稿個別ページなど<strong>記事の出力件数が「１件」と確定しているページ</strong>では、上記の処理は省略されており、いきなり「the_title()」などのテンプレートタグが記述されています。</p>



<p class="is-style-big_icon_check wp-block-paragraph">このように<strong><span class="swl-marker mark_yellow">そのページへアクセスがあったときにWordPressがURLを元に自動的に記事情報を取得する処理のこと</span></strong>を<strong><span class="swl-marker mark_yellow">メインループ</span></strong>と呼びます。</p>


<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4374558503914683"
     crossorigin="anonymous"></script>
<!-- ディスプレイ【横長】 -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-4374558503914683"
     data-ad-slot="9744298852"
     data-ad-format="auto"
     data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">WP_Queryの役割（サブループ）</h2>



<p class="wp-block-paragraph">先ほど</p>



<p class="wp-block-paragraph">「そのページへアクセスがあったときにWordPressがURLを元に自動的に記事情報を取得する処理のことをメインループと呼ぶ」</p>



<p class="wp-block-paragraph">とお伝えしました。</p>



<p class="wp-block-paragraph">では、この<strong><span class="swl-marker mark_yellow">メインループで自動取得される記事情報とは別に記事を取得する</span></strong>にはどのような方法があるのでしょうか？</p>



<p class="is-style-bg_stripe wp-block-paragraph">そこで登場するのが、この記事の主役となる<strong>WP_Query（サブループを作成するための仕組み）</strong>です。</p>



<h3 class="wp-block-heading">サブループ</h3>



<p class="wp-block-paragraph"><strong>WP_Query（<strong>サブループを作成するための仕組み</strong>）</strong>は、簡単に言うと<strong><span class="swl-marker mark_yellow">メインループ以外で記事情報を取得するための仕組み</span></strong>です。</p>



<p class="wp-block-paragraph">これを利用することで、例えば任意のページに「そのページに関連した記事一覧」を表示するといったカスタマイズが可能になります。</p>



<p class="is-style-big_icon_check wp-block-paragraph"><strong>メインループ以外で記事情報を取得→出力したいときに利用する仕組み</strong>を<strong>サブループ</strong>と呼ぶ</p>



<h2 class="wp-block-heading" id="wp-basic-method-anc">WP_Queryの基本的な使い方</h2>



<p class="wp-block-paragraph">メインループとサブループを簡単に整理すると以下の通りです。</p>



<div class="swell-block-capbox cap_box"><div class="cap_box_ttl"><span>メインループとサブループ</span></div><div class="cap_box_content">
<dl class="swell-block-dl is-style-border">
<dt class="swell-block-dl__dt">メインループ</dt>



<dd class="swell-block-dl__dd">
<ul class="wp-block-list">
<li>WordPressが、アクセスされたURLを元に自動実行する記事情報の取得処理</li>
</ul>
</dd>



<dt class="swell-block-dl__dt">サブループ</dt>



<dd class="swell-block-dl__dd">
<ul class="wp-block-list">
<li>メインループとは別に記事情報を取得して出力したい場合に使用する処理</li>
</ul>
</dd>
</dl>
</div></div>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript><span class="c-balloon__iconName">ケケンタ</span></div><div class="c-balloon__body -speaking -border-on"><div class="c-balloon__text">
<p>ここからは、具体的な<strong>サブループの使用方法（記述方法）</strong>を解説していきます。</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<p class="has-text-align-center is-style-balloon_box wp-block-paragraph"><strong>WP_Query（サブループ）の基本構造</strong></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>// １．サブループの条件指定
$args = array(
    // ここに呼び出したい記事の条件パラメータを記述
);

// ２．サブループ用のクエリを生成＝記事情報を取得
$query = new WP_Query( $args );    // 変数名は任意
 
// ３．クエリを回して取得した記事を１件ずつ出力する
if ( $query-&gt;have_posts() ):
    while ( $query-&gt;have_posts() ) : $query-&gt;the_post();

    // コンテンツの表示処理（the_title()など） 

    endwhile;
endif;
 
// ４．投稿データのリセット
wp_reset_postdata();
?&gt;</code></pre></div>



<p class="has-text-align-center is-style-bg_stripe wp-block-paragraph">上記のソースコードのように、WP_Queryを利用してサブループを作成する際には<br>大きく分けて<strong>４つのパーツを利用</strong>します。</p>



<p class="wp-block-paragraph">この内、「３．クエリを回して取得した記事を１件ずつ出力する」の処理はメインループの記述にそっくりなのが分かります。</p>



<div class="swell-block-capbox cap_box"><div class="cap_box_ttl"><span>サブループの流れ</span></div><div class="cap_box_content">
<ul class="wp-block-list is-style-num_circle -list-under-dashed">
<li>取得したい記事条件を指定</li>



<li>①を元に記事情報を取得</li>



<li>②で取得した記事情報を出力</li>



<li>最後にメインループを元に戻す（※<a href="#about-wp-reset-postdata-anc">別途解説</a>します）</li>
</ul>
</div></div>



<h3 class="wp-block-heading">使用例</h3>



<p class="wp-block-paragraph">ここではいくつか<strong>使用例</strong>を提示します。</p>



<p class="has-text-align-center is-style-balloon_box2 wp-block-paragraph">（例）カテゴリースラッグが「sample」の投稿を10件取得する</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$args = array(
    &#39;category_name&#39;  =&gt; &#39;sample&#39;,  // カテゴリースラッグ「sample」を指定
    &#39;post_type&#39;      =&gt; &#39;post&#39;,    // 「投稿」を指定
    &#39;posts_per_page&#39; =&gt; 10,        // 表示件数を「10件」に指定
);

$query = new WP_Query( $args );
 
if ( $query-&gt;have_posts() ):
    while ( $query-&gt;have_posts() ) : $query-&gt;the_post();

        the_title();    //「投稿タイトル」を出力 
        the_content();  //「投稿本文」を出力 

    endwhile;
endif;
 
wp_reset_postdata();
?&gt;</code></pre></div>



<p class="has-text-align-center is-style-balloon_box2 wp-block-paragraph">（例）投稿を「新しい順」に10件取得する</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$args = array(
    &#39;post_type&#39;      =&gt; &#39;post&#39;,    // 「投稿」を指定
    &#39;posts_per_page&#39; =&gt; 10,        // 表示件数を「10件」に指定
    &#39;order&#39;          =&gt; DESC       // 「降順」に並び替え
    &#39;orderby&#39;        =&gt; date       // 「日付」順に並び替え
);

$query = new WP_Query( $args );
 
if ( $query-&gt;have_posts() ):
    while ( $query-&gt;have_posts() ) : $query-&gt;the_post();

        the_title();    //「投稿タイトル」を出力 
        the_content();  //「投稿本文」を出力 

    endwhile;
endif;
 
wp_reset_postdata();
?&gt;</code></pre></div>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript><span class="c-balloon__iconName">ケケンタ</span></div><div class="c-balloon__body -speaking -border-on"><div class="c-balloon__text">
<p>以上が<strong>WP_Queryの使用方法</strong>です！</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<p class="wp-block-paragraph">基本的な構造は変わらないため、「条件の指定の仕方」さえ理解してしまえば使い方にはそれほど迷わないかと思います。</p>



<h3 class="wp-block-heading" id="about-wp-reset-postdata-anc">wp_reset_postdata()について</h3>



<p class="is-style-bg_stripe wp-block-paragraph">最後に「wp_reset_postdata()」の意義について解説します。</p>



<p class="wp-block-paragraph">記事の最初の方でメインループの流れをご説明したとき</p>



<p class="wp-block-paragraph">「WordPressが自動取得した記事情報は<strong>グローバル変数</strong>に格納される」とお伝えしました。</p>



<p class="wp-block-paragraph">このグローバル変数は「$wp_query」という名前で定義されています。</p>



<p class="wp-block-paragraph">また、サブループで記事情報を取得した際にも、実はその記事情報というのは「$wp_query」に格納されます。</p>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/困った顔-150x150.jpg" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/困った顔-150x150.jpg" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript><span class="c-balloon__iconName">ケケンタ</span></div><div class="c-balloon__body -speaking -border-on"><div class="c-balloon__text">
<p>どういうこと……？</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<p class="wp-block-paragraph">具体的には、サブループでは以下のような流れで処理が実行されます。</p>



<div class="swell-block-capbox cap_box"><div class="cap_box_ttl"><span>サブループの処理の流れ</span></div><div class="cap_box_content">
<ul class="wp-block-list is-style-num_circle -list-under-dashed">
<li>指定された条件で記事情報を取得</li>



<li>①で取得した記事情報は、メインループ情報が格納されている<strong>$wp_queryを<span class="swl-marker mark_yellow">上書き</span>する形で保存</strong>される<br>※つまり、ここで<strong>一時的にメインループの情報が消滅</strong>してしまう</li>



<li>if文～while文の処理の部分で、$wp_query内から①で取得した記事情報をひとつずつ取り出す</li>



<li>wp_reset_postdata()で<strong>$wp_queryの中身をメインループの情報に戻す</strong><br>※これにより<strong>サブループで取得した記事情報は消滅する</strong></li>
</ul>
</div></div>



<p class="wp-block-paragraph">ポイントとしては以下の通りです。</p>



<div class="wp-block-group is-style-big_icon_good"><div class="wp-block-group__inner-container">
<ul class="wp-block-list is-style-check_list -list-under-dashed">
<li>メインループで使用されるグローバル変数$wp_queryは、WordPress全体で共有して使用される</li>



<li>サブループで$wp_queryを上書きしている</li>



<li>そのため、サブループの最後にメインループ情報を復元しないと、その後のメインループ内の情報がサブループのものに置き換わってしまっているため出力内容に不具合が発生する</li>
</ul>
</div></div>



<p class="wp-block-paragraph">そのため、wp_reset_postdata()はサブループを用いる際には必ず記述しなければいけない処理であり、おまじない的な関数という位置づけにあります。</p>


<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4374558503914683"
     crossorigin="anonymous"></script>
<!-- ディスプレイ【横長】 -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-4374558503914683"
     data-ad-slot="9744298852"
     data-ad-format="auto"
     data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">WP_Queryで使用可能なパラメータ一覧</h2>



<p class="has-text-align-center is-style-bg_stripe wp-block-paragraph">以下は、<strong>WP_Queryで使用可能なパラメータの一覧</strong>です。<br>サブループを使用する際にお役立てください。<br>参考にしたサイト：<a href="https://rishuntrading.co.jp/blog/wordpress/wp_query-get_posts-code-snippet/">https://rishuntrading.co.jp/blog/wordpress/wp_query-get_posts-code-snippet/</a></p>



<h3 class="wp-block-heading">固定・投稿ページ</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$args = array(
    &#39;p&#39; =&gt; 10,                                      // 投稿IDを指定
    &#39;name&#39; =&gt; &#39;post_sample&#39;,                        // 投稿スラッグを指定
    &#39;page_id&#39; =&gt; 10,                                // 固定ページのIDを指定
    &#39;pagename&#39; =&gt; &#39;page_sample&#39;,                    // 固定ページスラッグを指定
    &#39;pagename&#39; =&gt; &#39;parent/child_sample&#39;,            // 子ページを表示する場合「親のスラッグ/子のスラッグ」の形式で指定
    &#39;post_parent&#39; =&gt; 10,                            // 指定したページIDの子ページを検索
    &#39;post_parent__in&#39; =&gt; array( 10, 11, 12 ),       // 親ページIDを含む投稿を検索(配列)
    &#39;post_parent__not_in&#39; =&gt; array( 10, 11, 12 ),   // 親ページIDを含まない投稿を検索(配列)
    &#39;post__in&#39; =&gt; array( 10, 11, 12 ),              // 該当の投稿IDで検索(配列)
    &#39;post__not_in&#39; =&gt; array( 10, 11, 12 ),          // 該当の投稿IDを含まない投稿を検索(配列) 
);</code></pre></div>



<h3 class="wp-block-heading">カテゴリー</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$args = array(
    &#39;cat&#39; =&gt; 3,                              // カテゴリIDを指定
    &#39;category_name&#39; =&gt; &#39;sample01, sample02&#39;, // カテゴリのスラッグで指定(複数は&quot;,&quot;(カンマ)区切り）
    &#39;category__and&#39; =&gt; array( 1, 3 ),        // カテゴリIDを指定(配列)(該当のカテゴリIDで検索)
    &#39;category__in&#39; =&gt; array( 1, 3 ),         // カテゴリIDを指定(配列)(該当のカテゴリIDで検索)
    &#39;category__not_in&#39; =&gt; array( 2, 8 ),     // カテゴリIDを指定(配列)(該当のカテゴリIDを含まない記事ｗｐ検索)
);</code></pre></div>



<h3 class="wp-block-heading">タグ</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$args = array(
    &#39;tag&#39; =&gt; &#39;sample&#39;,                                  // タグのスラッグを指定
    &#39;tag_id&#39; =&gt; 5,                                      // タグIDを指定
    &#39;tag__and&#39; =&gt; array( 2 , 6 ),                       // タグIDを指定(配列)(該当のタグIDで検索)
    &#39;tag__in&#39; =&gt; array( 2 , 6 ),                        // タグIDを指定(配列)(該当のタグIDで検索)
    &#39;tag__not_in&#39; =&gt; array( 2 , 6 ),                    // タグIDを指定(配列)(該当のタグIDを含まない記事を検索)
    &#39;tag_slug__and&#39; =&gt; array( &#39;sample01&#39;, &#39;sample02&#39; ), // タグスラッグを指定(配列)(タグスラッグを含む記事を検索)
    &#39;tag_slug__in&#39; =&gt; array( &#39;sample01&#39;, &#39;sample02&#39; ),  // タグスラッグを指定(配列)(タグスラッグを含む記事を検索)  
);</code></pre></div>



<h3 class="wp-block-heading">カスタム投稿</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$args = array(
    // ひとつだけ指定する場合
    &#39;post_type&#39; =&gt; &#39;post&#39;;          // 投稿

    // 複数指定する場合は配列を使用
    &#39;post_type&#39; =&gt; array( 
            &#39;post&#39;,                 // 投稿
            &#39;page&#39;,                 // 固定ページ
            &#39;revision&#39;,             // リビジョン
            &#39;attachment&#39;,           // 添付ファイル
            &#39;custom-post-type&#39;      // カスタム投稿タイプのスラッグ
    ),

    // 全てのpost_typeを表示(revisionと&#39;exclude_from_search&#39;がtrueにセットされたものは除く)
    &#39;post_type&#39; =&gt; &#39;any&#39;,
);</code></pre></div>



<h3 class="wp-block-heading">並び順（ソート）</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$args = array(
    &#39;order&#39; =&gt; &#39;DESC&#39;,          // &#39;ASC&#39;  昇順  1, 2, 3　　a, b, c
                                // &#39;DESC&#39; 降順  3, 2, 1　　c, b, a
 
    &#39;orderby&#39; =&gt; &#39;date&#39;,        // デフォルト値&#39;date&#39; 

    // 複数指定も可能
    &#39;orderby&#39; =&gt; &#39;date title&#39;
);</code></pre></div>



<p class="has-text-align-center is-style-balloon_box wp-block-paragraph">orderbyで指定可能なパラメータ一覧</p>



<figure class="wp-block-table is-thead-centered"><table><thead><tr><th>パラメータ名</th><th>ソート対象</th></tr></thead><tbody><tr><td>none</td><td>並び替えなし</td></tr><tr><td>ID</td><td>投稿ID</td></tr><tr><td>author</td><td>著者</td></tr><tr><td>name</td><td>投稿スラッグ</td></tr><tr><td>modified</td><td>更新日</td></tr><tr><td>parent</td><td>親ページID</td></tr><tr><td>rand</td><td>ランダム順</td></tr><tr><td>comment_count</td><td>コメント数</td></tr><tr><td>menu_order</td><td>ページの表示順</td></tr><tr><td>meta_valuee</td><td>アルファベット順</td></tr><tr><td>meta_value_num</td><td>数値</td></tr><tr><td>post_in</td><td>post__inで配列で指定された投稿IDの並び順</td></tr></tbody></table><figcaption class="wp-element-caption">orderbyで指定可能なパラメータ一覧</figcaption></figure>



<h3 class="wp-block-heading">タクソノミー（カテゴリーやタグも指定可能）</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$args = array(
    // ひとつのタクソノミーを指定
    &#39;tax_query&#39; =&gt; array(
            array(
                &#39;taxonomy&#39; =&gt; &#39;sample&#39;,                 // タクソノミーのスラッグを指定
                &#39;field&#39; =&gt; &#39;slug&#39;,                      // term_id, name, slug のいずれかの検索対象のタームのフィールド
                &#39;terms&#39; =&gt; array( &#39;saitama&#39;, &#39;tokyo&#39; ), // fieldに指定した検索対象フィールドの検索値(配列)
                &#39;include_children&#39; =&gt; true,             // 子孫タクソノミーを含めるかどうか
                &#39;operator&#39; =&gt; &#39;IN&#39;                      // &#39;IN&#39;,&#39;NOT IN&#39;,&#39;AND&#39;,&#39;EXISTS&#39;,&#39;NOT EXISTS&#39;が利用可能
            ),
    )

    //複数のタクソノミー条件は&#39;AND&#39;や&#39;OR&#39;で結ぶ
    &#39;tax_query&#39; =&gt; array(
        &#39;relation&#39; =&gt; &#39;AND&#39;,                            // タクソノミーの検索条件に &#39;AND&#39; か &#39;OR&#39;指定
            array(
                &#39;taxonomy&#39; =&gt; &#39;prefecture&#39;,
                &#39;field&#39; =&gt; &#39;slug&#39;,
                &#39;terms&#39; =&gt; array( &#39;saitama&#39;, &#39;tokyo&#39; ),
                &#39;include_children&#39; =&gt; true,
                &#39;operator&#39; =&gt; &#39;IN&#39;
            ),
            array(
                &#39;taxonomy&#39; =&gt; &#39;contry&#39;,
                &#39;field&#39; =&gt; &#39;id&#39;,
                &#39;terms&#39; =&gt; array( 122, 132, 141 ),
                &#39;include_children&#39; =&gt; false,
                &#39;operator&#39; =&gt; &#39;NOT IN&#39;
            )
    )
);</code></pre></div>



<h3 class="wp-block-heading">カスタムフィールド</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$args = array(
    // ひとつのカスタムフィールドを指定する場合
    &#39;meta_key&#39; =&gt; &#39;key&#39;,                    // カスタムフィールドのキーを指定
    &#39;meta_value&#39; =&gt; &#39;value&#39;,                // カスタムフィールドの値を指定(文字列)
    &#39;meta_value_num&#39; =&gt; 10,                 // カスタムフィールドの値を指定(数字)
    &#39;meta_compare&#39; =&gt; &#39;=&#39;,                  //「meta_value」に対する演算子（&#39;!=&#39;、&#39;&gt;&#39;、&#39;&gt;=&#39;、&#39;&lt;&#39;、&#39;=&#39;の５つが使用可能）
    &#39;meta_query&#39; =&gt; array(                  // カスタムフィールドのパラメーター
              array(
                   &#39;key&#39; =&gt; &#39;sample_k&#39;,     // カスタムフィールドのキー
                   &#39;value&#39; =&gt; &#39;sample_v&#39;,   // カスタムフィールドの値 (※compareの値が&#39;IN&#39;、&#39;NOT IN&#39;、&#39;BETWEEN&#39;、&#39;NOT BETWEEN&#39;のみ配列をサポート)
                   &#39;type&#39; =&gt; &#39;CHAR&#39;,        // カスタムフィールドの型
                   &#39;compare&#39; =&gt; &#39;=&#39;,        // 演算子の指定
              ),
    ),

    // 複数のカスタムフィールド条件は&#39;AND&#39;や&#39;OR&#39;で結ぶ
    &#39;meta_query&#39; =&gt; array(
         &#39;relation&#39; =&gt; &#39;AND&#39;,               // カスタムフィールドの検索条件に &#39;AND&#39; か &#39;OR&#39;指定
              array(
                   &#39;key&#39; =&gt; &#39;sample_k&#39;,      
                   &#39;value&#39; =&gt; &#39;sample_v&#39;,      
                   &#39;type&#39; =&gt; &#39;CHAR&#39;,        
                   &#39;compare&#39; =&gt; &#39;=&#39;,        
              ),
              array(
                   &#39;key&#39; =&gt; &#39;sample_k02&#39;,
                   &#39;value&#39; =&gt; array( sample_v01, sample_v02 ),
                   &#39;compare&#39; =&gt; &#39;NOT LIKE&#39;,
               )
    ),
);</code></pre></div>



<p class="has-text-align-center is-style-balloon_box wp-block-paragraph">meta_queryのcompareで指定可能なパラメータ一覧</p>



<figure class="wp-block-table is-thead-centered"><table><thead><tr><th>演算子</th><th>意味</th></tr></thead><tbody><tr><td>=</td><td>値が一致</td></tr><tr><td>!=</td><td>値が一致しない</td></tr><tr><td>&gt;</td><td>「演算子の左」が「演算子の右」より大きい</td></tr><tr><td>&gt;=</td><td>「演算子の左」が「演算子の右」以上</td></tr><tr><td>&lt;</td><td>「演算子の左」が「演算子の右」より小さい</td></tr><tr><td>&lt;=</td><td>「演算子の左」が「演算子の右」以下</td></tr><tr><td>LIKE</td><td>「演算子の左」が「演算子の右」に一致</td></tr><tr><td>NOT LIKE</td><td>「演算子の左」が「演算子の右」に一致しない</td></tr><tr><td>IN</td><td>値(配列)で指定したいずれかに一致</td></tr><tr><td>NOT IN</td><td>値(配列)で指定したいずれにも一致しない</td></tr><tr><td>BETWEEN</td><td>2つの値で指定した範囲内(境界を含む)である</td></tr><tr><td>NOT BETWEEN</td><td>2つの値で指定した範囲外である</td></tr></tbody></table><figcaption class="wp-element-caption">meta_queryのcompareで指定可能なパラメータ一覧</figcaption></figure>



<h3 class="wp-block-heading">投稿の状態（公開・下書きなど）</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$args = array(
    // ひとつだけ指定する場合
    &#39;post_status&#39; =&gt; &#39;publish&#39;,     // 公開状態

    // 複数指定する場合は配列を使用
    &#39;post_status&#39; =&gt; array(         // 投稿の状態を指定
            &#39;publish&#39;,              // 公開状態
            &#39;pending&#39;,              // レビュー待ち状態
            &#39;draft&#39;,                // 下書き状態
            &#39;auto-draft&#39;            // コンテンツのない、新しく作成された投稿/ページを表示
            &#39;future&#39;,               // 予約公開が設定された状態
            &#39;private&#39;,              // ログインしたユーザーしか見れない状態
            &#39;inherit&#39;,              // リビジョン
            &#39;trash&#39;,                // ゴミ箱に入っている状態
     ),

    // すべての状態(post_statusで&#39;exclude_from_search&#39;がtrueにセットされたものは除く)
    &#39;post_status&#39; =&gt; &#39;any&#39;,
);</code></pre></div>



<h3 class="wp-block-heading">著者</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$args = array(
    &#39;author&#39; =&gt; &#39;1,2,3&#39;,                            // 著者のユーザIDを指定
    &#39;author_name&#39; =&gt; &#39;kekenta&#39;,                     // user_nicenameを指定(ログイン名(user_login)ではないです)
    &#39;author__in&#39; =&gt; array( 2 , 6 ),                 // 該当のユーザーIDが含む記事で指定
    &#39;author__not_in&#39; =&gt; array( 2 , 6 ),             // 該当のユーザーIDを含まない記事で指定
);</code></pre></div>



<h3 class="wp-block-heading">日付・時間</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$args = array(

    &#39;date_query&#39; =&gt; array(
         array(
            &#39;year&#39; =&gt; 2021,                 // 年を指定(2021など)
            &#39;month&#39; =&gt; 8,                   // 月を指定(1～12)
            &#39;week&#39; =&gt; 31,                   // 年内の週を指定(0～53)
            &#39;day&#39; =&gt; 5,                     // 月内の日を指定(1～31)
            &#39;hour&#39; =&gt; 2,                    // 時間を指定(0～23)
            &#39;minute&#39; =&gt; 3,                  // 分を指定(0～60)
            &#39;second&#39; =&gt; 36,                 // 秒を指定(0～60)
            &#39;after&#39; =&gt; array(               // 指定した日付以降の投稿を取得  →  「&#39;after&#39;=&gt;&#39;2020/02/28&#39;」という指定も可能
                  &#39;year&#39;  =&gt; 2013,          // 年を指定(2013など) デフォルトは空
                  &#39;month&#39; =&gt; 2,             // 年内の月を指定(1～12) デフォルトは12
                  &#39;day&#39;   =&gt; 28,            // 月内の日を指定(1～31) デフォルトは月内の末日
             )
            &#39;before&#39; =&gt; array(              // 指定した日付以前の投稿を取得  →  「&#39;before&#39;=&gt;&#39;2020/02/28&#39;」という指定も可能
                  &#39;year&#39;  =&gt; 2013,          
                  &#39;month&#39; =&gt; 2,             
                  &#39;day&#39;   =&gt; 28,            
             ),
            &#39;inclusive&#39; =&gt; true,            // ｢after｣or｢before｣で指定された値を含むかどうか
            &#39;compare&#39; =&gt; &#39;=&#39;,               // &#39;=&#39;, &#39;!=&#39;, &#39;&gt;&#39;, &#39;&gt;=&#39;, &#39;&lt;&#39;, &#39;&lt;=&#39;, &#39;LIKE&#39;, &#39;NOT LIKE&#39;, &#39;IN&#39;, &#39;NOT IN&#39;, &#39;BETWEEN&#39;, &#39;NOT BETWEEN&#39;, &#39;EXISTS&#39; , and &#39;NOT EXISTS&#39;が使用可能
            &#39;column&#39; =&gt; &#39;post_date&#39;,        // 照会するカラムを指定
        ),
    ),

    // 「期間」を指定する場合は&#39;AND&#39;や&#39;OR&#39;で結ぶ
　　&#39;date_query&#39; =&gt; array(
         &#39;relation&#39; =&gt; &#39;AND&#39;,
         array(
              &#39;year&#39;    =&gt; 2013,
              &#39;month&#39;   =&gt; 2,
              &#39;compare&#39; =&gt; &#39;&gt;=&#39;
         ),
         array(
              &#39;year&#39;    =&gt; 2013,
              &#39;month&#39;   =&gt; 8,
              &#39;compare&#39; =&gt; &#39;&lt;=&#39;
         ),
    ),
);
 
</code></pre></div>



<h3 class="wp-block-heading">ページ送り</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$args = array(
    &#39;posts_per_page&#39; =&gt; 10,             // 1ページに表示できる最大投稿数(「-1」は全て表示)
    &#39;posts_per_archive_page&#39; =&gt; 10,     // 1ページに表示できる最大投稿数(アーカイブページのみ)
    &#39;nopaging&#39; =&gt; false,                // ページ送りの有効/無効
    &#39;paged&#39; =&gt; 3,                       // ページ番号3の記事一覧を表示
    &#39;paged&#39; =&gt; get_query_var(&#39;paged&#39;),  // 現在のページから投稿を表示
    &#39;offset&#39; =&gt; 10,                     // 設定した数だけ、ずらして表示(例では11番目の投稿から表示)
    &#39;ignore_sticky_posts&#39; =&gt; false,     // 先頭の固定表示投稿を無視するかどうか(false=先頭の固定表示投稿は無視しない)
);</code></pre></div>



<h3 class="wp-block-heading">パスワード</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$args = array(
    &#39;has_password&#39; =&gt; true,                         // パスワード付きの投稿を検索( true or false )
    &#39;post_password&#39; =&gt; &#39;birthday1111&#39;,              // 該当のパスワードが付いた投稿を検索
);</code></pre></div>



<h2 class="wp-block-heading">WP_Queryを活用すれば記事情報を自由に扱える</h2>



<p class="wp-block-paragraph">いかがだったでしょうか。</p>



<p class="wp-block-paragraph">WordPressには「メインループ」と「サブループ」という大きく<strong>２種類の記事取得の仕組み</strong>が備わっています。</p>



<p class="is-style-bg_stripe wp-block-paragraph">今回ご紹介したのはこの内の「サブループ」を扱うための仕組み<strong>WP_Query</strong>の使用方法でした。</p>



<p class="wp-block-paragraph">WP_QueryはWordPressでサイト制作を行うなら使用必須の仕組みです。</p>



<p class="wp-block-paragraph">また、これを上手く扱えるようになれば、<strong>任意のページで好きな記事情報を自由に引き出すことが可能</strong>です。</p>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript><span class="c-balloon__iconName">ケケンタ</span></div><div class="c-balloon__body -speaking -border-on"><div class="c-balloon__text">
<p>WordPressは簡単にサイト制作が行えるCMSである一方、本当の意味で使いこなそうとすると実は覚えることや理解すべきことがたくさんあります。</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<p class="wp-block-paragraph">この記事がその一助となったなら何よりです。</p>



<p class="wp-block-paragraph">それでは、最後までご覧いただきありがとうございました。</p>



<p class="wp-block-paragraph">当ブログではWordPressやWeb制作、PHPに関する記事を発信しています。<br>ご興味のある方はほかの記事もご覧いただけると嬉しいです。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://kekenta-it-blog.com/wp-subloop-wq/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
