php 模板自定义post_types

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php 模板自定义post_types相关的知识,希望对你有一定的参考价值。

//cuando se registra un post type tiene que tener los siguientes argumentos:

'capability_type' => 'page',
'hierarchical' => true,
'supports' => array( 'page-attributes' ),
add_action( 'add_meta_boxes', 'add_custom_page_attributes_meta_box' );
function add_custom_page_attributes_meta_box(){
global $post;
    if ( 'page' != $post->post_type && post_type_supports($post->post_type, 'page-attributes') ) {
        add_meta_box( 'custompageparentdiv', __('Template'), 'custom_page_attributes_meta_box', NULL, 'side', 'core');
    }
}

function custom_page_attributes_meta_box($post) {
    $template = get_post_meta( $post->ID, '_wp_page_template', 1 ); ?>
    <select name="page_template" id="page_template">
        <?php $default_title = apply_filters( 'default_page_template_title',  __( 'Default Template' ), 'meta-box' ); ?>
        <option value="default"><?php echo esc_html( $default_title ); ?></option>
        <?php page_template_dropdown($template); ?>
    </select><?php
}

add_action( 'save_post', 'save_custom_page_attributes_meta_box' );
function save_custom_page_attributes_meta_box( $post_id ) {
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
    if ( isset( $_POST['post_type'] ) && 'page' == $_POST['post_type'] ) return;
    if ( ! current_user_can( 'edit_post', $post_id ) ) return;
    if ( ! empty( $_POST['page_template'] ) && get_post_type( $post_id ) != 'page' ) {
        update_post_meta( $post_id, '_wp_page_template', $_POST['page_template'] );
    }
}
//como son singles x mas que las capabilities sean 'page'' hay que engañara  single.php

//1. tomar el valor del select
$meta = get_post_meta( get_the_ID(), '_wp_page_template', TRUE );

//2. 
//los archivos de los templates no deberian tener loop, header ni footer, solo el comentario de
// /* Template Name: Contacto */
// y los divs que tengan el contenido

//3.armar el if para mostrar:

if($meta){
	include $meta;
}else{ 
//estilos de la single x defecto
}

以上是关于php 模板自定义post_types的主要内容,如果未能解决你的问题,请参考以下文章

更改 slug 时存档-post_type.php 中断

通过存档页面上的自定义字段查询自定义帖子类型

获取自定义发布页名称

wordpress调用自定义post_type文章

从 Wordpress 取消注册自定义帖子类型

wordpress调用指定类型post_type的文章