es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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 );
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema con el código es que las funciones wp_set_object_terms() y wp_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:

    1. Verificar si el usuario actual tiene la capacidad requerida para editar los términos de la taxonomía dada. Si no es así, utilizar la función wp_set_current_user() para establecer un usuario con la capacidad requerida antes de llamar a las funciones wp_set_object_terms() y wp_remove_object_terms().
    2. Verificar si el $taxonomy y los IDs de término $job_expired_id y $job_ongoing_id son correctos y existen en la base de datos.
    3. Verificar si el tipo de publicación job tiene la taxonomía current-status registrada y los términos asignados a las publicaciones.
    4. Utilizar la función error_log() para depurar el código y verificar si está entrando en la condición que llama a las funciones wp_set_object_terms() y wp_remove_object_terms().
    5. Intentar actualizar el núcleo de WordPress y las dependencias a las últimas versiones, ya que podría solucionar cualquier error o conflicto con las funciones.

    Espero que estos pasos ayuden a resolver el problema.

Comments are closed.