<?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>帖子重复展示 Archives - CNERIS</title>
	<atom:link href="https://cneris.com/zh/tag/%E5%B8%96%E5%AD%90%E9%87%8D%E5%A4%8D%E5%B1%95%E7%A4%BA/feed/" rel="self" type="application/rss+xml" />
	<link>https://cneris.com/zh/tag/帖子重复展示/</link>
	<description></description>
	<lastBuildDate>Mon, 01 Jul 2024 19:14:32 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.1</generator>
	<item>
		<title>如何防止wordpress的帖子重复展示</title>
		<link>https://cneris.com/zh/%e5%a6%82%e4%bd%95%e9%98%b2%e6%ad%a2wordpress%e7%9a%84%e5%b8%96%e5%ad%90%e9%87%8d%e5%a4%8d%e5%b1%95%e7%a4%ba/</link>
					<comments>https://cneris.com/zh/%e5%a6%82%e4%bd%95%e9%98%b2%e6%ad%a2wordpress%e7%9a%84%e5%b8%96%e5%ad%90%e9%87%8d%e5%a4%8d%e5%b1%95%e7%a4%ba/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Mon, 01 Jul 2024 17:01:04 +0000</pubDate>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[wordpress 帖子重复展示]]></category>
		<category><![CDATA[帖子重复]]></category>
		<category><![CDATA[帖子重复展示]]></category>
		<guid isPermaLink="false">https://cneris.com/?p=1568</guid>

					<description><![CDATA[<p>如何防止wordpress的帖子重复展示, 方法一：使用全局变量 初始化一个数组来存储已显示的文章ID在第一个循环之前，初始化一个空数组来跟踪已显示的文章ID。 php global $do_not_duplicate; $do_not_duplicate = array(); 第一个循环在第一个循环中，将已显示的文章ID存储在全局数组中。 php &lt;?php global $do_not_duplicate; $query1 = new WP_Query(array( ‘posts_per_page’ =&gt; 5, ));if ($query1-&gt;have_posts()) : while ($query1-&gt;have_posts()) : $query1-&gt;the_post(); $do_not_duplicate[] = get_the_ID(); // 你的循环代码在这里 endwhile; wp_reset_postdata(); endif; ?&gt; 第二个循环在第二个循环中，排除存储在全局数组中的文章ID。 php &lt;?php global $do_not_duplicate; $query2 = new WP_Query(array( ‘posts_per_page’ =&gt; 5, ‘post__not_in’ =&gt; $do_not_duplicate, ));if ($query2-&gt;have_posts()) : [...]</p>
<p>The post <a href="https://cneris.com/zh/%e5%a6%82%e4%bd%95%e9%98%b2%e6%ad%a2wordpress%e7%9a%84%e5%b8%96%e5%ad%90%e9%87%8d%e5%a4%8d%e5%b1%95%e7%a4%ba/">如何防止wordpress的帖子重复展示</a> appeared first on <a href="https://cneris.com/zh">CNERIS</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h3>如何防止wordpress的帖子重复展示, 方法一：使用全局变量</h3>
<ol>
<li><strong>初始化一个数组来存储已显示的文章ID</strong>在第一个循环之前，初始化一个空数组来跟踪已显示的文章ID。
<div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium">
<div class="flex items-center relative text-token-text-secondary bg-token-main-surface-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md"><span id="more-1568"></span><br />
php</p>
<div class="flex items-center"></div>
</div>
<div class="overflow-y-auto p-4" dir="ltr"><code class="!whitespace-pre hljs language-php"><span class="hljs-keyword">global</span> <span class="hljs-variable">$do_not_duplicate</span>;<br />
<span class="hljs-variable">$do_not_duplicate</span> = <span class="hljs-keyword">array</span>();<br />
</code></div>
</div>
</li>
<li><strong>第一个循环</strong>在第一个循环中，将已显示的文章ID存储在全局数组中。
<div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium">
<div class="flex items-center relative text-token-text-secondary bg-token-main-surface-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md">
<p>php</p>
<div class="flex items-center"></div>
</div>
<div class="overflow-y-auto p-4" dir="ltr"><code class="!whitespace-pre hljs language-php"><code class="!whitespace-pre hljs language-php"><span class="hljs-meta">&lt;?php</span><br />
<span class="hljs-keyword">global</span> <span class="hljs-variable">$do_not_duplicate</span>;<br />
<span class="hljs-variable">$query1</span> = <span class="hljs-keyword">new</span> <span class="hljs-title class_">WP_Query</span>(<span class="hljs-keyword">array</span>(<br />
<span class="hljs-string">'posts_per_page'</span> =&gt; 5,<br />
));</code></code><span class="hljs-keyword">if</span> (<span class="hljs-variable">$query1</span>-&gt;<span class="hljs-title function_ invoke__">have_posts</span>()) :<br />
<span class="hljs-keyword">while</span> (<span class="hljs-variable">$query1</span>-&gt;<span class="hljs-title function_ invoke__">have_posts</span>()) : <span class="hljs-variable">$query1</span>-&gt;<span class="hljs-title function_ invoke__">the_post</span>();<br />
<span class="hljs-variable">$do_not_duplicate</span>[] = <span class="hljs-title function_ invoke__">get_the_ID</span>();<br />
<span class="hljs-comment">// 你的循环代码在这里</span><br />
<span class="hljs-keyword">endwhile</span>;<br />
<span class="hljs-title function_ invoke__">wp_reset_postdata</span>();<br />
<span class="hljs-keyword">endif</span>;<br />
<span class="hljs-meta">?&gt;</span></div>
</div>
</li>
<li><strong>第二个循环</strong>在第二个循环中，排除存储在全局数组中的文章ID。
<div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium">
<div class="flex items-center relative text-token-text-secondary bg-token-main-surface-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md">
<p>php</p>
<div class="flex items-center"></div>
</div>
<div class="overflow-y-auto p-4" dir="ltr"><code class="!whitespace-pre hljs language-php"><code class="!whitespace-pre hljs language-php"><span class="hljs-meta">&lt;?php</span><br />
<span class="hljs-keyword">global</span> <span class="hljs-variable">$do_not_duplicate</span>;<br />
<span class="hljs-variable">$query2</span> = <span class="hljs-keyword">new</span> <span class="hljs-title class_">WP_Query</span>(<span class="hljs-keyword">array</span>(<br />
<span class="hljs-string">'posts_per_page'</span> =&gt; 5,<br />
<span class="hljs-string">'post__not_in'</span> =&gt; <span class="hljs-variable">$do_not_duplicate</span>,<br />
));</code></code><span class="hljs-keyword">if</span> (<span class="hljs-variable">$query2</span>-&gt;<span class="hljs-title function_ invoke__">have_posts</span>()) :<br />
<span class="hljs-keyword">while</span> (<span class="hljs-variable">$query2</span>-&gt;<span class="hljs-title function_ invoke__">have_posts</span>()) : <span class="hljs-variable">$query2</span>-&gt;<span class="hljs-title function_ invoke__">the_post</span>();<br />
<span class="hljs-comment">// 你的循环代码在这里</span><br />
<span class="hljs-keyword">endwhile</span>;<br />
<span class="hljs-title function_ invoke__">wp_reset_postdata</span>();<br />
<span class="hljs-keyword">endif</span>;<br />
<span class="hljs-meta">?&gt;</span></div>
</div>
</li>
</ol>
<p>&nbsp;</p>
<h3>方法二：使用Transients处理更复杂的场景</h3>
<p>如果你有更复杂的场景或需要在网站的不同部分中持久化排除，可以考虑使用WordPress的transients。</p>
<ol>
<li><strong>设置Transient</strong>在循环之前，检查是否存在transient并使用它。如果不存在，则初始化一个空数组。
<div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium">
<div class="flex items-center relative text-token-text-secondary bg-token-main-surface-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md">
<p>php</p>
<div class="flex items-center"></div>
</div>
<div class="overflow-y-auto p-4" dir="ltr"><code class="!whitespace-pre hljs language-php"><span class="hljs-variable">$do_not_duplicate</span> = <span class="hljs-title function_ invoke__">get_transient</span>(<span class="hljs-string">'excluded_posts'</span>) ? <span class="hljs-title function_ invoke__">get_transient</span>(<span class="hljs-string">'excluded_posts'</span>) : <span class="hljs-keyword">array</span>();<br />
</code></div>
</div>
</li>
<li><strong>第一个循环</strong>在第一个循环之后，将文章ID存储在transient中。
<div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium">
<div class="flex items-center relative text-token-text-secondary bg-token-main-surface-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md">
<p>php</p>
<div class="flex items-center"></div>
</div>
<div class="overflow-y-auto p-4" dir="ltr"><code class="!whitespace-pre hljs language-php"><code class="!whitespace-pre hljs language-php"><span class="hljs-meta">&lt;?php</span><br />
<span class="hljs-variable">$query1</span> = <span class="hljs-keyword">new</span> <span class="hljs-title class_">WP_Query</span>(<span class="hljs-keyword">array</span>(<br />
<span class="hljs-string">'posts_per_page'</span> =&gt; 5,<br />
));</code></code><span class="hljs-keyword">if</span> (<span class="hljs-variable">$query1</span>-&gt;<span class="hljs-title function_ invoke__">have_posts</span>()) :<br />
<span class="hljs-keyword">while</span> (<span class="hljs-variable">$query1</span>-&gt;<span class="hljs-title function_ invoke__">have_posts</span>()) : <span class="hljs-variable">$query1</span>-&gt;<span class="hljs-title function_ invoke__">the_post</span>();<br />
<span class="hljs-variable">$do_not_duplicate</span>[] = <span class="hljs-title function_ invoke__">get_the_ID</span>();<br />
<span class="hljs-comment">// 你的循环代码在这里</span><br />
<span class="hljs-keyword">endwhile</span>;<br />
<span class="hljs-title function_ invoke__">wp_reset_postdata</span>();<br />
<span class="hljs-title function_ invoke__">set_transient</span>(<span class="hljs-string">&#8216;excluded_posts&#8217;</span>, <span class="hljs-variable">$do_not_duplicate</span>, HOUR_IN_SECONDS);<br />
<span class="hljs-keyword">endif</span>;<br />
<span class="hljs-meta">?&gt;</span></div>
</div>
</li>
<li><strong>第二个循环</strong>在第二个循环中，排除存储在transient中的文章ID。
<div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium">
<div class="flex items-center relative text-token-text-secondary bg-token-main-surface-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md">
<p>php</p>
<div class="flex items-center"></div>
</div>
<div class="overflow-y-auto p-4" dir="ltr"><code class="!whitespace-pre hljs language-php"><code class="!whitespace-pre hljs language-php"><span class="hljs-meta">&lt;?php</span><br />
<span class="hljs-variable">$query2</span> = <span class="hljs-keyword">new</span> <span class="hljs-title class_">WP_Query</span>(<span class="hljs-keyword">array</span>(<br />
<span class="hljs-string">'posts_per_page'</span> =&gt; 5,<br />
<span class="hljs-string">'post__not_in'</span> =&gt; <span class="hljs-variable">$do_not_duplicate</span>,<br />
));</code></code><span class="hljs-keyword">if</span> (<span class="hljs-variable">$query2</span>-&gt;<span class="hljs-title function_ invoke__">have_posts</span>()) :<br />
<span class="hljs-keyword">while</span> (<span class="hljs-variable">$query2</span>-&gt;<span class="hljs-title function_ invoke__">have_posts</span>()) : <span class="hljs-variable">$query2</span>-&gt;<span class="hljs-title function_ invoke__">the_post</span>();<br />
<span class="hljs-comment">// 你的循环代码在这里</span><br />
<span class="hljs-keyword">endwhile</span>;<br />
<span class="hljs-title function_ invoke__">wp_reset_postdata</span>();<br />
<span class="hljs-keyword">endif</span>;<br />
<span class="hljs-meta">?&gt;</span></div>
</div>
</li>
</ol>
<p>通过遵循这些方法，你可以避免在WordPress网站的多个循环中显示相同的文章。使用全局变量的方法简单且适用于简单的情况。使用transients的方法更适合于需要在网站不同部分或较长时间内持久化排除的复杂场景。</p>
<p><a href="https://cneris.com/zh/category/wordpress-zh/">更多WORDPRESS的文章</a></p>
<p>The post <a href="https://cneris.com/zh/%e5%a6%82%e4%bd%95%e9%98%b2%e6%ad%a2wordpress%e7%9a%84%e5%b8%96%e5%ad%90%e9%87%8d%e5%a4%8d%e5%b1%95%e7%a4%ba/">如何防止wordpress的帖子重复展示</a> appeared first on <a href="https://cneris.com/zh">CNERIS</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://cneris.com/zh/%e5%a6%82%e4%bd%95%e9%98%b2%e6%ad%a2wordpress%e7%9a%84%e5%b8%96%e5%ad%90%e9%87%8d%e5%a4%8d%e5%b1%95%e7%a4%ba/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
