Caso de uso:
Eu tenho um tipo de post relacionado a um programa de música. O 'horário do show' é marcado pela data de publicação posterior, que será definida em algum momento no futuro. Encontrei uma função que pega futuras postagens de blog datadas e deixa a data, mas marca a postagem como publicada em save, mas não foi capaz de descobrir como personalizá-la para um tipo de postagem personalizada.
A função está abaixo.
<?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
fonte
fonte
remove_action
eadd_action
? Seu segundo parâmetro é'show'
, mas não deveria ser a função que você está adicionando ou removendo?Respostas:
Incrível, combinando as respostas de Mike e Jan, criei isso que funciona apenas no tipo de post em questão. Não precisamos da condição condicional do show, porque o gancho 'future_show' pega apenas o tipo de post do show e o atualiza.
fonte
Eu não posso dizer com certeza já que não têm o seu site para teste com mas eu acredito que você só precisa remover
'show'
a partirremove_action()
eadd_action()
chamadas. Awp_publish_post()
função é independente em relação aos tipos de postagem, pelo menos é o que parece ao ler o código. Então tente o seguinte:Obviamente, se você deseja limitar apenas a fazer shows, pode fazer algo assim (embora a lógica seja mais complicada se você precisar trabalhar com outros tipos de postagem também):
Espero que isto ajude?
fonte
Eu acho que essa ação é convocada
wp_transition_post_status
. O código é:Portanto, para postagens futuras normais, o último gancho será
future_post
, mas, para o seu tipo, seráfuture_show
ou seja qual for o seu tipo de lesma.fonte
Se tudo o que você deseja fazer é adicionar uma data extra para 'horários do show', pode ser mais fácil adicionar uma caixa meta que faça exatamente isso - usar a data de publicação para falsificá-la pode ser potencialmente problemático, pois o WordPress a definirá como status "futuro" sempre que for atualizado com uma data de publicação futura (eu acho), então você precisará estar conectado sempre que uma postagem for atualizada para restaurá-la novamente. Além disso, você pode reservar "Data de publicação" para o que se destina.
Eu provavelmente usaria apenas uma
meta_key
e uma meta box personalizada. Embora dependa da complexidade das suas consultas que mostram as postagens.Se você definir o meta_value como um carimbo de data / hora, poderá solicitar ainda a data da hora do show ou selecionar antes / depois de uma determinada data:
$events = get_posts( 'post_type=events&meta_key=show_time&meta_value=' . strtotime( '+1 week' ) . '&meta_compare=<&orderby=meta_value' );
Receberia todos os "eventos" com um horário de exibição o mais tardar uma semana a partir da data atual. Nota: O acima não foi testado, mas deve funcionar :)
fonte
O WP Dev Nacin usa uma substituição simples de função:
fonte