Caso de uso:
Tengo un tipo de publicación que se relaciona con un programa de música. El "tiempo de presentación" se toma a través de la fecha de publicación de la publicación, que se establece en algún momento en el futuro. He encontrado una función que toma futuras publicaciones de blog con fecha y deja la fecha, pero marca la publicación como publicada en guardar, pero no he podido encontrar la forma de personalizarla para un tipo de publicación personalizada.
La función está abajo.
<?php
function setup_future_hook() {
// Replace native future_post function with replacement
remove_action('future_post','show', '_future_post_hook');
add_action('future_post', 'show', 'publish_future_post_now');
}
function publish_future_post_now($id) {
// Set new post's post_status to "publish" rather than "future."
wp_publish_post($id);
}
add_action('init', 'setup_future_hook');
?>
custom-post-types
init
curtismchale
fuente
fuente
remove_action
yadd_action
llame? Su segundo parámetro es'show'
, pero ¿no debería ser la función que está agregando o eliminando?Respuestas:
Impresionante la combinación de las respuestas de Mike y Jan. Se me ocurrió esto, que solo funciona en el tipo de publicación en cuestión. No necesitamos el condicional de show porque el enlace 'future_show' solo toma el tipo de publicación de show y lo actualiza.
fuente
No puedo decir con seguridad, ya que no tengo su sitio a prueba con, pero creo que sólo tiene que quitar
'show'
deremove_action()
yadd_action()
llamadas. Lawp_publish_post()
función es agnóstica con respecto a los tipos de publicación, al menos eso es lo que parece al leer el código. Entonces prueba esto:Por supuesto, si desea limitarse a hacer solo programas, es posible que desee hacer algo como esto (aunque la lógica será más complicada si necesita que funcione también con otros tipos de publicaciones):
¿Espero que esto ayude?
fuente
Creo que se llama a esta acción
wp_transition_post_status
. El codigo es:Entonces, para publicaciones futuras normales, el último gancho será
future_post
, pero para su tipo seráfuture_show
o lo que sea su tipo de babosa.fuente
Si todo lo que desea hacer es agregar una fecha adicional para 'mostrar horarios', puede ser más fácil agregar un cuadro de meta que hace exactamente eso: usar la fecha de publicación para falsificarlo podría ser potencialmente problemático, ya que WordPress lo configurará en estado "futuro" cada vez que se actualiza con una fecha de publicación futura (creo), por lo que tendrá que estar enganchando cada vez que se actualice una publicación para volver a configurarla. Además, de esa manera podría reservar "Fecha de publicación" para lo que está destinado.
Probablemente solo usaría un
meta_key
y un meta cuadro personalizado. Aunque depende de cuán complejas sean sus consultas que muestren las publicaciones.Si configura el meta_valor como una marca de tiempo, puede ordenar por la fecha de la presentación, o seleccionar antes / después de una fecha determinada:
$events = get_posts( 'post_type=events&meta_key=show_time&meta_value=' . strtotime( '+1 week' ) . '&meta_compare=<&orderby=meta_value' );
Obtendría todos los "eventos" con un horario de exhibición a más tardar una semana después de la fecha actual. Nota: Lo anterior no se ha probado, pero debería funcionar :)
fuente
WP Dev Nacin utiliza una función de anulación simple:
fuente