La función de WordPress se usa para enviar datos mediante programación. Campos estándar para enviar para incluir el contenido, extracto, título, fecha y muchos más.
Lo que no hay documentación es cómo enviar a un campo personalizado. Sé que es posible con la add_post_meta($post_id, $meta_key, $meta_value, $unique);
función.
Pero, ¿cómo incluir eso en la wp_insert_post
función estándar ?
<?php
$my_post = array(
'post_title' => $_SESSION['booking-form-title'],
'post_date' => $_SESSION['cal_startdate'],
'post_content' => 'This is my post.',
'post_status' => 'publish',
'post_type' => 'booking',
);
wp_insert_post( $my_post );
?>
php
custom-field
post-meta
posts
Robin I Knight
fuente
fuente
public
modificador frente a "function". Si incluye la función en sí misma sin ponerla en una clase, no necesita agregarlapublic
Simplemente puede agregar 'add_post_meta' después de 'wp_insert_post'
fuente
No creo que pueda usarlo con wp_insert_post () ;.
La razón se debe a cómo WP almacena los dos tipos de datos. Las publicaciones se almacenan en una gran tabla monolítica con una docena de columnas diferentes (wp_posts); Los campos personalizados se almacenan en una tabla más simple de 4 columnas (wp_postmeta) compuesta principalmente por una metaclave y un valor, asociados con una publicación.
En consecuencia, realmente no puede almacenar campos personalizados hasta que tenga la ID de publicación.
Prueba esto:
Esta publicación del códice ayudó: es algo opuesto a lo que está haciendo (es decir, eliminar una fila de base de datos al eliminarla): http://codex.wordpress.org/Plugin_API/Action_Reference/delete_post
fuente
Use
save_post
filtro, luego llameadd_post_meta
a su función de filtro.fuente
save_post
acción de @aendrew está al final de la función, tiene la identificación de la publicación y el objeto pasado, la respuesta es sólida.