<?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>Sleeping sand &#187; Wordpress</title>
	<atom:link href="http://flyingsand.com/sand/tag/wp/feed/" rel="self" type="application/rss+xml" />
	<link>http://flyingsand.com/sand</link>
	<description>Learning by Doing.</description>
	<lastBuildDate>Tue, 06 Apr 2010 04:21:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>利用echo=0判断页面是否存在子页面</title>
		<link>http://flyingsand.com/sand/2008/12/echo-0-detect-whether-page-has-subpages/</link>
		<comments>http://flyingsand.com/sand/2008/12/echo-0-detect-whether-page-has-subpages/#comments</comments>
		<pubDate>Thu, 18 Dec 2008 14:56:54 +0000</pubDate>
		<dc:creator>sand</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[subpage]]></category>
		<category><![CDATA[wp_list_pages]]></category>

		<guid isPermaLink="false">http://flyingsand.com/sand/?p=101</guid>
		<description><![CDATA[当本页面存在父页面时，在sidebar列出父页面下属的所有页面（即列出跟本页面同级的页面），当本页面为父页面时，则列本页的子页面出来，这是CMS最普遍的应用之一，实现方法为(sidebar.php)：... ]]></description>
			<content:encoded><![CDATA[<p>当本页面存在父页面时，在sidebar列出父页面下属的所有页面（即列出跟本页面同级的页面），当本页面为父页面时，则列本页的子页面出来，这是CMS最普遍的应用之一，实现方法为(sidebar.php)：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">&lt;?php</span><span style="color: Gray;"> </span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">have_posts</span><span style="color: Olive;">())</span><span style="color: Gray;"> : </span><span style="color: Blue;">?&gt;</span></li>
<li><span style="color: Blue;">&lt;?php</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">while</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">have_posts</span><span style="color: Olive;">())</span><span style="color: Gray;"> : </span><span style="color: Blue;">the_post</span><span style="color: Olive;">()</span><span style="color: Gray;">; </span><span style="color: Blue;">?&gt;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">&lt;?php</span><span style="color: Gray;">&nbsp;</span><span style="color: #ffa500;">/* Creates a menu for pages beneath the level of the current page - Thanks K2 Theme*/</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Blue;">is_page</span><span style="color: Olive;">()</span><span style="color: Gray;"> </span><span style="color: Green;">and</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: #00008b;">$notfound</span><span style="color: Gray;"> != </span><span style="color: #8b0000;">'</span><span style="color: Red;">1</span><span style="color: #8b0000;">'</span><span style="color: Olive;">))</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">$parent_page</span><span style="color: Gray;"> = </span><span style="color: #00008b;">$post</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">ID</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp;&nbsp; </span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">while</span><span style="color: Olive;">(</span><span style="color: #00008b;">$parent_page</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">$page_query</span><span style="color: Gray;"> = </span><span style="color: #00008b;">$wpdb</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">get_row</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">SELECT ID, post_title, post_status, post_parent FROM </span><span style="color: #00008b;">$wpdb</span><span style="color: Red;">-&gt;posts WHERE ID = '</span><span style="color: #00008b;">$parent_page</span><span style="color: Red;">'</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">$parent_page</span><span style="color: Gray;"> = </span><span style="color: #00008b;">$page_query</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">post_parent</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">$parent_id</span><span style="color: Gray;"> = </span><span style="color: #00008b;">$page_query</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">ID</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">$parent_title</span><span style="color: Gray;"> = </span><span style="color: #00008b;">$page_query</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">post_title</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: #00008b;">$wpdb</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">get_results</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">SELECT * FROM </span><span style="color: #00008b;">$wpdb</span><span style="color: Red;">-&gt;posts WHERE post_parent = '</span><span style="color: #00008b;">$parent_id</span><span style="color: Red;">' AND post_status != 'attachment'</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">))</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span><span style="color: Gray;"> </span><span style="color: Blue;">?&gt;</span></li>
<li><span style="color: Black;">&nbsp;</span></li>
<li><span style="color: Black;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;div class=&quot;s_panel&quot;&gt;</span></li>
<li><span style="color: Black;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;h2 class=&quot;title&quot;&gt;</span><span style="color: Blue;">&lt;?php</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">echo</span><span style="color: Gray;"> </span><span style="color: #00008b;">$parent_title</span><span style="color: Gray;">; </span><span style="color: Blue;">?&gt;</span><span style="color: Black;">&lt;/h2&gt;</span></li>
<li><span style="color: Black;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;ul&gt;</span><span style="color: Blue;">&lt;?php</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">wp_list_pages</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">depth=1&amp;sort_column=menu_order&amp;title_li=&amp;child_of=</span><span style="color: #8b0000;">'</span><span style="color: Gray;">. </span><span style="color: #00008b;">$parent_id</span><span style="color: Olive;">)</span><span style="color: Gray;">; </span><span style="color: Blue;">?&gt;</span><span style="color: Black;">&lt;/ul&gt;</span></li>
<li><span style="color: Black;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/div&gt;</span></li>
<li><span style="color: Black;">&nbsp;</span></li>
<li><span style="color: Black;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">&lt;?php</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">}</span><span style="color: Blue;">?&gt;</span></li>
<li><span style="color: Black;">&nbsp; &nbsp; </span></li>
<li><span style="color: Black;">&nbsp; &nbsp; </span><span style="color: Blue;">&lt;?php</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"> } </span><span style="color: Blue;">?&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span></li>
<li><span style="color: Blue;">&lt;?php</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">endwhile</span><span style="color: Gray;">; </span><span style="color: Green;">endif</span><span style="color: Gray;">; </span><span style="color: Blue;">?&gt;</span></li></ol></div>
<p>但是有个问题一直没解决，就是当本页面是很孤独的页面，没有父页面也没有子页面时，怎样让侧边不出现这个s_panel，以前我用两种作法，一是硬挤几个同级页面给它，一是做2个template，带和不带s_panel各一个，都很麻烦，刚突然发现了可以在上述parent_id功能上，再利用wp_list_pages结合echo=0来判断是否要输出，问题就迎刃而解了。真是好晕，整天在CODEX上的<a href="http://codex.wordpress.org/Template_Tags/wp_list_pages">wp_list_pages</a>上琢磨，却完全没有看到echo=0！</p>
<p>改后的代码如下：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">&lt;?php</span><span style="color: Gray;"> </span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">have_posts</span><span style="color: Olive;">())</span><span style="color: Gray;"> : </span><span style="color: Blue;">?&gt;</span></li>
<li><span style="color: Blue;">&lt;?php</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">while</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">have_posts</span><span style="color: Olive;">())</span><span style="color: Gray;"> : </span><span style="color: Blue;">the_post</span><span style="color: Olive;">()</span><span style="color: Gray;">; </span><span style="color: Blue;">?&gt;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">&lt;?php</span><span style="color: Gray;">&nbsp;</span><span style="color: #ffa500;">/* Creates a menu for pages beneath the level of the current page - Thanks K2 Theme*/</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Blue;">is_page</span><span style="color: Olive;">()</span><span style="color: Gray;"> </span><span style="color: Green;">and</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: #00008b;">$notfound</span><span style="color: Gray;"> != </span><span style="color: #8b0000;">'</span><span style="color: Red;">1</span><span style="color: #8b0000;">'</span><span style="color: Olive;">))</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">$parent_page</span><span style="color: Gray;"> = </span><span style="color: #00008b;">$post</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">ID</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp;&nbsp; </span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">while</span><span style="color: Olive;">(</span><span style="color: #00008b;">$parent_page</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">$page_query</span><span style="color: Gray;"> = </span><span style="color: #00008b;">$wpdb</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">get_row</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">SELECT ID, post_title, post_status, post_parent FROM </span><span style="color: #00008b;">$wpdb</span><span style="color: Red;">-&gt;posts WHERE ID = '</span><span style="color: #00008b;">$parent_page</span><span style="color: Red;">'</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">$parent_page</span><span style="color: Gray;"> = </span><span style="color: #00008b;">$page_query</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">post_parent</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">$parent_id</span><span style="color: Gray;"> = </span><span style="color: #00008b;">$page_query</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">ID</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">$parent_title</span><span style="color: Gray;"> = </span><span style="color: #00008b;">$page_query</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">post_title</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: #00008b;">$wpdb</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">get_results</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">SELECT * FROM </span><span style="color: #00008b;">$wpdb</span><span style="color: Red;">-&gt;posts WHERE post_parent = '</span><span style="color: #00008b;">$parent_id</span><span style="color: Red;">' AND post_status != 'attachment'</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">))</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span><span style="color: Gray;"> </span><span style="color: Blue;">?&gt;</span></li>
<li><span style="color: Black;">&nbsp; &nbsp; </span></li>
<li><span style="color: Black;">&nbsp; &nbsp; &nbsp; &nbsp; </span></li>
<li><span style="color: Black;">&nbsp; &nbsp; </span><span style="color: Blue;">&lt;?php</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">$subpage</span><span style="color: Gray;"> = </span><span style="color: Blue;">wp_list_pages</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">depth=1&amp;echo=0&amp;child_of=</span><span style="color: #8b0000;">'</span><span style="color: Gray;">.</span><span style="color: #00008b;">$parent_id</span><span style="color: Olive;">)</span><span style="color: Gray;">; </span><span style="color: Blue;">?&gt;&lt;?php</span><span style="color: Gray;"> </span><span style="color: #ffa500;">//关键 </span><span style="color: Blue;">?&gt;</span></li>
<li><span style="color: Black;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">&lt;?php</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: #00008b;">$subpage</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span><span style="color: Gray;"> </span><span style="color: Blue;">?&gt;</span></li>
<li><span style="color: Black;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;div class=&quot;s_panel&quot;&gt;</span></li>
<li><span style="color: Black;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;h2 class=&quot;title&quot;&gt;</span><span style="color: Blue;">&lt;?php</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">echo</span><span style="color: Gray;"> </span><span style="color: #00008b;">$parent_title</span><span style="color: Gray;">; </span><span style="color: Blue;">?&gt;</span><span style="color: Black;">&lt;/h2&gt;</span></li>
<li><span style="color: Black;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;ul&gt;</span><span style="color: Blue;">&lt;?php</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">wp_list_pages</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">depth=1&amp;sort_column=menu_order&amp;title_li=&amp;child_of=</span><span style="color: #8b0000;">'</span><span style="color: Gray;">. </span><span style="color: #00008b;">$parent_id</span><span style="color: Olive;">)</span><span style="color: Gray;">; </span><span style="color: Blue;">?&gt;</span><span style="color: Black;">&lt;/ul&gt;</span></li>
<li><span style="color: Black;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/div&gt;</span></li>
<li><span style="color: Black;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">&lt;?php</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">}</span><span style="color: Blue;">?&gt;</span></li>
<li><span style="color: Black;">&nbsp; &nbsp; </span></li>
<li><span style="color: Black;">&nbsp; &nbsp; </span><span style="color: Blue;">&lt;?php</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"> </span><span style="color: Olive;">}</span><span style="color: Gray;"> </span><span style="color: Blue;">?&gt;</span></li>
<li><span style="color: Blue;">&lt;?php</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">endwhile</span><span style="color: Gray;">; </span><span style="color: Green;">endif</span><span style="color: Gray;">; </span><span style="color: Blue;">?&gt;</span></li></ol></div>
<p>今天顺便把WP升级到2.7了，进入后台却发现侧栏导航条不见了，冷静的思考一下，怀疑是插件lighter-menu导致的，直接在地址栏输入插件页将之停用，马上恢复正常！：）</p>
]]></content:encoded>
			<wfw:commentRss>http://flyingsand.com/sand/2008/12/echo-0-detect-whether-page-has-subpages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
