1

CMS に、それぞれ独自のテンプレートを持つさまざまなページ (「キャリア」、「ジョブ」、「チーム」など) を用意し、それらを 1 つの大きなスクロール可能なページ (「当社」など) に結合して、テンプレート。どうすればいいですか?

以前は関数があったことは知っていますが、それはget_page廃止されました (そして、同じものではないものに置き換えられましget_postた) が、ページのテンプレートを取得しません。

  1. ページとテンプレートの両方が必要なので、両方をメイン ページに出力できます。

  2. また、誰かがナビゲーションメニューをクリックして「ジョブ」または「チーム」に移動すると、その「当社」ページに移動しますが、クエリ文字列を使用してページのその部分にスクロールできるようにしたいです

これは可能ですか?

4

3 に答える 3

1

編集

あるページのコンテンツを別のページに取得するには、次の関数を使用します。

function show_post($path){
 $post = get_page_by_path($path);
 $content = apply_filters('the_content', $post->post_content);
 echo $content;
}

template-our_company.php次に、関数を呼び出す「当社」ページ ( など) のテンプレートを作成します ( など<?php show_post('careers'); /* Shows the content of the "Careers" page using the slug. */ ?>)。

したがって、テンプレート ファイルには次のようなものが含まれている必要があります。

<?php
show_post('careers'); 
show_post('jobs'); 
show_post('team'); 
?>

2 番目の質問については、次のように template-our_company.php ファイルを調整する必要があります。

<?php
<div id="careers"></div>
show_post('careers'); 
<div id="jobs"></div>
show_post('jobs'); 
<div id="team"></div>
show_post('team'); 
?>

次に、メニュー ダッシュボードで、ナビゲーション リンクを「/our-company/#careers」などに調整します。

編集2

別のテンプレートで指定されたテンプレートを使用してページのコンテンツを取得するには、次の手順を実行できます。

/*
Template Name: Careers
*/

...

/*
Template Name: Jobs
*/

次に、「親」テンプレートで、上記の指定されたテンプレートが テストされていないコードを選択した投稿をクエリできます

$args = array(
    'meta_query' => array(
        'relation' => 'OR',
        array(
            'key' => '_wp_page_template',
            'value' => 'careers.php',
            'compare' => '='
        ),
        array(
            'key' => '_wp_page_template',
            'value' => 'jobs.php',
            'compare' => '='
        )
    )
);

$myposts = get_posts( $args );
foreach ( $myposts as $post ) : setup_postdata( $post );
    the_content();
    // or add anything else
endforeach; 
wp_reset_postdata();
于 2014-02-01T16:23:41.550 に答える
0

@ user3418748 の答えは私にとって良いスタートでしたが、私の場合、特定のページをロードする必要がありget_template_part()、ループの外で実行していたため、単独で使用するだけではコンテンツがロードされないことがわかりました。これを機能させるには、最初にグローバル$post変数を表示したいページ/投稿に設定する必要があります。私が使用した関数は次のとおりです(mytemplateテンプレートの名前に置き換えてください):

function mytemplate_show_page($path) {
    global $post;
    $post = get_page_by_path($path);
    $tpl_slug = get_page_template_slug($post->ID);
    $tpl_slug_exp = explode('.', $tpl_slug);
    get_template_part($tpl_slug_exp[0]);
}
于 2016-07-04T19:14:10.263 に答える