WordPress:您可以以编程方式创建页面模板吗?

时间:2018-10-05 09:50:07

标签: wordpress

我目前正在使用WordPress API为WordPress构建React / Redux主题。我需要将页面模板添加到主题。我可以通过创建几乎空的文件来做到这一点,例如:

package com.arnchr.sounddemo;

import android.media.MediaPlayer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    MediaPlayer player = MediaPlayer.create(this, R.raw.laugh);
    player.setAudioStreamType(AudioManager.STREAM_MUSIC);
    try {
        player.prepare();
     } catch (IOException e) {
        Log.e(TAG, "error loading resources for player");
        e.printStackTrace();
    }

    player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer player) {
        player.start();
    }
}

但是我想以编程方式创建这些“页面模板”。

我需要的功能是能够在WordPress CMS中选择一个“页面模板”,并将其放在API上。如果按上述方式创建“页面模板”,此功能将按预期运行。

这可能吗?

1 个答案:

答案 0 :(得分:0)

这可以通过使用theme_page_templates过滤器来实现。

CONST CUSTOM_PAGE_TEMPLATES = array(
  array('slug' => 'home', 'label' => 'Home'),
  array('slug' => 'content-page', 'label' => 'Content Page'),
  array('slug' => 'ordering', 'label' => 'Ordering'),
  array('slug' => 'reviews', 'label' => 'Reviews')
); 

/**
 * Add file-less page templates to the page template dropdown 
 */
add_filter('theme_page_templates', function($page_templates, $wp_theme, $post) {
  foreach(CUSTOM_PAGE_TEMPLATES as $template) {
    // Append if it doesn't already exists
    if (!isset($page_templates[$template['slug']])) {
      $page_templates[$template['slug']] = $template['label'];
    }
  }
  return $page_templates;
}, PHP_INT_MAX, 3);