entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Creando Custom Post Types en Wordpress

Hola muy buenas tardes amigos de "entredesarrolladores".
Estoy recordando mis andazas por wordpress y he tenido problemas al crear entradas personalizadas o custom post types.
Según mis anotaciones antiguas esta era la manera de realizar uno:

add_action('init', 'codex_custom_init');
function codex_custom_init()
{
  $labels = array(
    'name' => _x('Productos', 'post type general name'),
    'singular_name' => _x('Producto', 'post type singular name'),
    'add_new' => _x('Añadir', 'producto'),
    'add_new_item' => __('Añadir nuevo Producto'),
    'edit_item' => __('Editar Producto'),
    'new_item' => __('Nuevo Producto'),
    'view_item' => __('Ver Producto'),
    'search_items' => __('Buscar Productos'),
    'not_found' =>  __('No se han encontrado Productos'),
    'not_found_in_trash' => __('No se han encontrado Productos en la papelera'),
    'menu_name' => 'Productos'

  );
  $args = array(
    'labels' => $labels,
    'public' => true,
    'publicly_queryable' => true,
    'show_ui' => true,
    'show_in_menu' => true,
    'query_var' => true,
    'rewrite' => true,
    'capability_type' => 'post',
    'has_archive' => true,
    'hierarchical' => false,
    'menu_position' => null,
    'supports' => array('title','editor','author','thumbnail','excerpt','comments')
  );
  register_post_type('producto',$args);
}

Me retorna el siguiente error: Fatal error: Call to undefined function add_action() in C:\AppServ\www\equex\wp-includes\functions.php on line 69. En la línea 69 se encuentra la instruccion add_action('init', 'codex_custom_init') solamente. No se si tiene que ver la versión de WP que estoy usando...
De antemano muchisimas gracias por la ayuda que me puedan ofrecer, si de algo sirve, estoy usando la versión 3.5.2.

2 Respuestas

0voto

Villanuevand Puntos5730

Se debe colocar el código en el archivo functions.php del theme activoen mí caso wp-content/themes/temaactivo/functions.php. Aparece el error, Fatal error: Call to undefined function add_action() in C:\AppServ\www\equex\wp-includes\functions.php porque estaba colocando el fragmento de código en la ruta errada.

Gracias a @Peter por su ayuda incondicional!

0voto

Peter comentado

Efectivamente va dentro del tema que usas. Pequeño detalle que no vi en el error antes expuesto. Di por hecho que lo tenías en el tema.

Que bueno que ya funciona!

Saludos.

1voto

Peter Puntos150460

Sin revisar ni una linea y mirando rápido, pasa add_action('init', 'codex_custom_init'); al final de todo.

La estás llamando antes de la función en si y debe de ser al revés. Función y después ejecución.

Saludos.

0voto

Villanuevand comentado

Ya lo he realizado, he colocado la función al final del archivo C:\AppServ\www\equex\wp-includes\functions.php y me ha salido el siguiente error.

Fatal error: Call to undefined function add_action() in C:\AppServ\www\equex\wp-includes\functions.php on line 3900

Este retorno a Wordpress ha sido realmente desconcertante. =(

0voto

Peter comentado

Ya revisando tu código, te dejo este ejemplo básico de un custom type:

add_action( 'init', 'create_post_type' );
function create_post_type() {
    register_post_type( 'producto_acme',
        array(
            'labels' => array(
                'name' => __( 'Productos' ),
                'singular_name' => __( 'Producto' )
            ),
        'public' => true,
        'has_archive' => true,
        )
    );
}

0voto

Villanuevand comentado

He colocado tú código y no ha ocurrido nada, se mantiene el error....
enter image description here

 Fatal error: Call to undefined function add_action() in C:\AppServ\www\equex\wp-includes\functions.php on line 3868

Que otros puntos podemos estar olvidando?

0voto

Peter comentado

Raro.

Prueba con este extendido ya más adaptado a lo que necesitas.

// Register Custom Post Type
function custom_post_type() {

$labels = array(
    'name'                => _x( 'Post Types', 'Post Type General Name', 'text_domain' ),
    'singular_name'       => _x( 'Post Type', 'Post Type Singular Name', 'text_domain' ),
    'menu_name'           => __( 'Post Type', 'text_domain' ),
    'parent_item_colon'   => __( 'Parent Item:', 'text_domain' ),
    'all_items'           => __( 'All Items', 'text_domain' ),
    'view_item'           => __( 'View Item', 'text_domain' ),
    'add_new_item'        => __( 'Add New Item', 'text_domain' ),
    'add_new'             => __( 'Add New', 'text_domain' ),
    'edit_item'           => __( 'Edit Item', 'text_domain' ),
    'update_item'         => __( 'Update Item', 'text_domain' ),
    'search_items'        => __( 'Search Item', 'text_domain' ),
    'not_found'           => __( 'Not found', 'text_domain' ),
    'not_found_in_trash'  => __( 'Not found in Trash', 'text_domain' ),
);
$args = array(
    'label'               => __( 'post_type', 'text_domain' ),
    'description'         => __( 'Post Type Description', 'text_domain' ),
    'labels'              => $labels,
    'supports'            => array( ),
    'taxonomies'          => array( 'category', 'post_tag' ),
    'hierarchical'        => false,
    'public'              => true,
    'show_ui'             => true,
    'show_in_menu'        => true,
    'show_in_nav_menus'   => true,
    'show_in_admin_bar'   => true,
    'menu_position'       => 5,
    'menu_icon'           => '',
    'can_export'          => true,
    'has_archive'         => true,
    'exclude_from_search' => false,
    'publicly_queryable'  => true,
    'capability_type'     => 'page',
);
register_post_type( 'post_type', $args );

}

// Hook into the 'init' action
add_action( 'init', 'custom_post_type', 0 );

0voto

Villanuevand comentado

Pues nada! Exactamente el mismo error...

Fatal error: Call to undefined function add_action() in C:\AppServ\www\equex\wp-includes\functions.php on line 3911

El problema se esta suscitando en la ultima línea cuando se hace el llamado a add_action().
enter image description here
No me estoy equivocando con el archivo donde coloco el código?

0voto

Peter comentado

¿Estas probando con WordPress 3.9.1, el tema por omisión y ningún plugin instalado ?

0voto

Villanuevand comentado

No para nada! Estoy con la versión 3.5.2 como viene por defecto!

0voto

Peter comentado

Ahí está el detalle!

¿Dónde te viene esa versión por defecto?

Baja WordPress 3.9.1 que es la versión actual, la que tu mencionas tiene años y por eso nada funciona. Era muy raro que no funcionara nada :)

0voto

Villanuevand comentado

Pues no he logrado hacerlo @Peter, actualice la versión, y coloco el código en functions.php localizado en la ruta C:\AppServ\www\equex\wp-includes y ahí creo que está el error. NO recuerdo si esa es la ruta correcta.

0voto

Villanuevand comentado

Muchisimas gracias por tú apoyo incondicional!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta