wp_set_object_terms no establece los términos para la publicación.
Este código no establece los términos del objeto. Por favor, ayúdame a resolver el problema. El código muestra la lista de publicaciones pero no establece los términos.
He revisado los siguientes datos:
– La consulta muestra la lista de publicaciones.
– La parte de cálculo en el bucle muestra el valor (menor o mayor que 0).
function set_expired_job_categories() {
global $post;
$current_time = time();
$taxonomy = 'current-status';
$job_expired_id = 368;
$job_ongoing_id = 367;
// Establecer los argumentos de la consulta
$args = array(
'fields' => 'ids', // Obtener solo los ID de las publicaciones para mejorar el rendimiento
'post_type' => 'job', // Tipo de publicación
'post_status' => 'publish',
'posts_per_page' => -1,
'tax_query' => array(
'taxonomy' => 'current-status',
'field' => 'slug',
'terms' => array( 'ongoing' ),
),
);
$job_expiration_query = new WP_Query( $args );
// Comprobar si hay publicaciones para eliminar, si no, devolver false
if( $job_expiration_query->have_posts() ){
while( $job_expiration_query->have_posts() ){
$job_expiration_query->the_post();
$postid = get_the_ID();
$expire_timestamp = rwmb_meta( 'deadline_date' );
if ( $expire_timestamp ) {
$seconds_between = ( (int)$expire_timestamp - (int)$current_time );
if ( $seconds_between <= 0 ) {
wp_set_object_terms( $postid, (int)$job_expired_id, $taxonomy, true );
wp_remove_object_terms( $postid, (int)$job_ongoing_id, $taxonomy );
}
}
}wp_reset_postdata();
}
}
add_action( 'set_job_categories', 'set_expired_job_categories', 20, 2 );
davy.ai
El problema con el código es que las funciones
wp_set_object_terms()
ywp_remove_object_terms()
no están estableciendo o eliminando los términos del objeto. El problema podría estar en los parámetros que se pasan en la función, ya que parecen estar correctos.Para solucionar este problema, podemos intentar los siguientes pasos:
wp_set_current_user()
para establecer un usuario con la capacidad requerida antes de llamar a las funcioneswp_set_object_terms()
ywp_remove_object_terms()
.$taxonomy
y los IDs de término$job_expired_id
y$job_ongoing_id
son correctos y existen en la base de datos.job
tiene la taxonomíacurrent-status
registrada y los términos asignados a las publicaciones.error_log()
para depurar el código y verificar si está entrando en la condición que llama a las funcioneswp_set_object_terms()
ywp_remove_object_terms()
.Espero que estos pasos ayuden a resolver el problema.