クライアントが最新の Wordpress リリースで使用するカスタム テーマを作成しています。このテーマでは、ページの名前 (Contact、About など) が div#pageTitle でラップされます。この div には、サイトのセクションに基づいてクラス (「aboutTitle」など) も割り当てられます。CSS は、ページの名前の横にアイコンを表示するように記述されており、各クラスに異なるアイコンが割り当てられています。意図した結果は、サイトの 1 つのセクション内のすべてのページに、そのセクション専用のアイコンを表示することです。(例: すべての「About」ページには 1 つのアイコンを使用し、すべての「Articles」には別のアイコンを使用するなど)。
この特定のケースでは、「About Us」というトップレベルのページがあります。「About Us」の下にいくつかの子ページがあります。「About Us」とそのすべての子ページに 1 つの特定のアイコンを表示し、それを表示するためのクラスを、functions.php に記述された関数に基づいて html に動的に記述したいと考えています。(当然、他のページ、セクションなどには、独自の関連付けられたアイコンがあります。)
私はうまくいくと思ったものを書きました、そしてそれは適切なクラスに書きます...ただし、サイトのすべての単一ページに対してそのクラスを書きます! 意図した結果を達成するために、私が間違ったことをしたこと、およびどのような修正を行うべきかを誰かが説明できますか?
functions.php に含めたコードは次のとおりです。
// Identify the post title of the parent page
function parentPostTitle() {
/* is it a page */
if( is_page() ) {
global $post;
/* Get an array of Ancestors and Parents if they exist */
$parents = get_post_ancestors( $post->ID );
/* Get the top Level page->ID count base 1, array base 0 so -1 */
$id = ($parents) ? $parents[count($parents)-1]: $post->ID;
/* Get the parent and set the $parentPostTitle with the page title (post_title) */
$parent = get_page( $id );
$parentPostTitle = $parent->post_title;
}
}
// Enable dynamic PageTitle Classes
function dynamicPageTitleClass() {
if (is_page("About Us") || ($parentPostTitle="About Us")) {
echo ' class="aboutTitle"';
} elseif (is_page("Contact Us")) {
echo ' class="contactTitle"';
} elseif (in_category("articles")) {
echo ' class="articlesTitle"';
} elseif (in_category("blogs")) {
echo ' class="blogTitle"';
} elseif (in_category("videos")) {
echo ' class="videosTitle"';
} else {
echo ' class=""';
}
}
お時間とご協力いただきありがとうございます。