Estoy tratando de configurar un tipo de publicación personalizada siguiendo este tutorial . Sin embargo, estoy un poco confundido sobre cómo / dónde implementar update_post_meta()
. El tutorial sugiere este patrón:
add_action('save_post', 'save_my_metadata');
function save_my_metadata()
{
global $post;
update_post_meta($post->ID, 'my_metadata', $_POST['my_metadata']);
}
Lo que funciona, pero tiene el desafortunado efecto de agregar esos metadatos a cada publicación, ya sea que pertenezca a este tipo personalizado o no.
Puse lo anterior functions.php
y supongo que podría ser parte del problema. Supongo que necesito restringir la acción 'save_post' para que solo se active para publicaciones de mi tipo personalizado.
custom-post-types
Bobby Jack
fuente
fuente
Respuestas:
Eso debería funcionar. Simplemente reemplace 'your_post_type' con el nombre del tipo de publicación. Además, hecho poco conocido: el gancho 'save_post' pasa la identificación de la publicación como argumento.
EDITAR
Actualicé la función para reflejar el comentario de Jan. Gracias Jan!
fuente
Si desea manejar varios tipos de publicaciones, le recomiendo una declaración básica de cambio:
Los casos son básicamente los mismos que
if($post->post_type) == 'post_type_1') {}
Pero no requieren múltiples bloques if-else. Eldefault
bloque en el interruptor maneja casos en los que el tipo de publicación no está en su conjunto personalizado.fuente
@John P Bloch y @EAMann ya han dado excelentes respuestas, así que la mía es además:
Obviamente, eso significa que necesitaría un metabox personalizado para poder editar los campos también. Aquí hay una pantalla de edición para el contexto:
save_{$post_type}_post
"; para unmovie
tipo de publicación seríasave_movie_post
. Esto es lo que tendría que agregar alfunctions.php
archivo de su tema o en un complemento en alguna parte:Con eso, podría volver a escribir su código original de esta manera (incluido el truco de subrayado del n. ° 1 anterior):
fuente
Personalmente, prefiero seguir el siguiente patrón para agregar meta manejadores personalizados a los tipos de publicaciones. Con lo siguiente, puede agregar el meta soporte a un tipo de publicación simplemente agregando la clave de soportes ('subtítulo' en el ejemplo a continuación) a la matriz de soportes para el tipo de publicación llamando a add_post_type_support ('my_post_type', 'subtitle');
Esperemos que algo así pronto se agregue al núcleo.
fuente
Antes de actualizar, verifique si la publicación actual es o no de su tipo de publicación. Eso aseguraría que no lo guarde para todas las publicaciones.
También debe verificar la entrada (que falta en su ejemplo) y, además, tenga en cuenta que solo puede agregar la acción cuando ese tipo de entrada está activo. Si ese es el caso, no necesita verificar ese tipo de publicación más adelante.
Obtener un tipo de publicación:
get_post_type()
o$post->post_type;
fuente
No puedo hacer que esto funcione, no estoy seguro de qué estoy haciendo mal, pero estoy tratando de usar el enlace post_updated en lugar de save_post, ya que quiero que estos valores se inserten después de que la publicación se haya actualizado para poder recuperar los valores de los otros campos personalizados .
fuente