是否将模板分配给自定义页面类型?

时间:2019-09-30 作者:Aravona

我已经为我的项目创建了一个自定义的页面类型(使用post状态),这样我就可以在阅读设置中选择页面,就像您为帖子页面和主页所做的那样。这一切都很好,我已指定ACF字段仅用于此页面类型。

但是,我想使用此页面,这样就可以添加任意数量的内容,但同时也可以显示此页面所代表的自定义帖子类型的存档列表/循环(将此页面视为帖子页面,但不是自定义帖子类型),但如何以WordPress获取index.phphome.phpfront-page.php 模板?我首先从archive-people.php 但是,我在页面上保存的内容与存档中的内容之间存在着断开连接。

以下是我创建和分配状态的方式:

add_filter( \'display_post_states\', function ( $post_states, $post ) {

  if ( intval( get_option( \'people\' ) ) === $post->ID) {
    $post_states[\'people\'] = __(\'People\', \'people\');
  }

  return $post_states;
}, 10, 2 );

add_action( \'admin_init\', function () {
  $id = \'people\';
  add_settings_field(
    $id,
    \'People Page:\',
    function( $args ) {
      $id = \'people\';
      wp_dropdown_pages( array(
        \'name\'              => \'People\',
        \'show_option_none\'  => \'— Select —\',
        \'option_none_value\' => \'0\',
        \'selected\'          => get_option( $id ),
      ) );
    },
    \'reading\',
    \'default\',
    array(
      \'label_for\' => \'field-\' . $id,
      \'class\'     => \'row-\' . $id,
    )
  );
} );


add_filter( \'whitelist_options\', function ( $options ) {
  $options[\'reading\'][] = \'people\';

  return $options;
} );
因此,我想最终得到一个类似于wordpress如何知道page\\u for\\u posts在admin中是X页,或者woocommerce是商店/帐户页,例如-虽然我已经对此进行了设置,但如何在我的主题中将新状态分配给php页?为了澄清,我没有使用页面属性驱动的模板。

目前,这是一个解决方案,在我的页面中有效,但感觉不干净。php:

@php $people_page = (int) get_option(\'people\'); @endphp

@if( $people_page === $post->ID )
  @section(\'content\')
    @while(have_posts()) @php the_post() @endphp
      @include(\'partials.custom-archive\')
    @endwhile
  @endsection
@else //do the regular page

1 个回复
SO网友:Edison

我觉得你的问题不是很清楚,但我相信这就是你想要做的。

您已创建自定义帖子类型:people. 您需要一个模板来显示存档列表以及也分配给此模板的帖子的完整内容。如果这听起来是对的,我想你可以继续你以前的尝试,利用archive-people.php 样板

你会使用archive-people.php 以正常方式显示此自定义帖子类型的帖子存档列表。要在存档列表之前或之后获取和显示特定帖子/页面的内容,可以使用要显示内容的帖子的帖子ID,如下所示:

// This is the ID of the post from which we want to get the post_content.
$my_post_id = 12; 

// Get the content for our specific post ID.
$my_post_content = apply_filters(\'the_content\', get_post_field(\'post_content\', $my_post_id));

// To print or display the content
echo $my_post_content;

相关推荐

Custom term templates

所以,我在网上做了一些研究,但没有找到可靠的答案,所以我来了。我需要为特定类别创建自定义woocommerce类别页面。例如,我有一个类别叫做“Awesome”。而不是使用由短代码生成的常规类别页面[product_category category=\"something\"], 我想为自定义特定类别页面Awesome.我发现我需要编辑taxonomy-product_cat.php 但我不知道如何将其链接到名为awesome.换句话说,我正在考虑制作php文件的自定义副本,然后将其添加为主题templ