0

IDの代わりにページタイトルを使用して、現在のWordpressページまたはサブページに基づいてコンテンツを表示しようとしています。

私が持っているのはこれです:

<?php if ( is_page( array( 'About', 'Chi Siamo' ) ) || ( get_the_title( $post->post_parent ) == ( array( 'About', 'Chi Siamo' ) ) ) ) { ?>
<p>Hello Joe</p>
<?php } else {} ?>

理由はわかりませんが、ページ名の識別には機能していますが、そのページのサブページには機能していません。

誰かが私が間違ったことをしたかもしれないことを見ることができますか?構文エラー?

ありがとう

PS。私も試しました

<?php if (get_the_title() || get_the_title( $post->post_parent ) == array( 'About', 'Chi Siamo' ) ) { ?>

ただし、これはすべてのページに当てはまります。

4

2 に答える 2

0

投稿タイトルは一意ではないため、投稿タイトルを使用してこれを行う理由について少し混乱しています。2つのページに同じタイトルを付けることができます。一方にサブページがあり、もう一方にサブページがない場合、出力は目的のページになりません。

于 2012-10-25T10:42:30.267 に答える
0

私はあなたの条件の2番目の部分から外側の括弧を削除します:( get_the_title( $post->post_parent ) == ( array( 'About', 'Chi Siamo' ) ) )そして$postそれが実際にあなたが思っているものであることを確認してください。

実際に存在var_dump($post)するかどうかを確認してみてください。post_parent

特に祖先を見つけることになると、タイトルでページをチェックするのは醜いです(スラッグまたはIDが本当に望ましいでしょう)。PHPの利点は動的であり、テーマをインストールするたびにIDを手動で変更する必要がないことです。現在のページのIDを取得して、それをget_ancestorsに渡してみませんか?

その配列を変数(多分$ancestors、)に$ancestors[0]格納すると、親ページのIDになります。get_the_titleそのIDの、それが「About」または「ChiSiamo」であるかどうかを確認します。

アップデート:

これがコピー可能なコード形式での私の以前の答えです:

$ancestors = get_ancestors($post->ID);
$parent_id = $ancestors[0]
$parent_title = get_the_title($parent_id);

そしてあなたの条件付き

if ( is_page(array('About', 'Chi Siamo' )) || $parent_title == 'About' || $parent_title == 'Chi Siamo') {
    echo '<p>Howdy</p>';
} else {}
于 2012-10-26T15:00:06.440 に答える