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.

PHP: Reemplace esta create_function

Este antiguo script de PHP que copié de internet ya no tiene soporte. create_function ya no funciona y me gustaría reemplazarlo. Sin embargo, no soy capaz de encontrar una solución moderna. Mis habilidades en PHP son tan malas que ni siquiera entiendo cómo solía funcionar esto. ¿Alguien sabe de una solución rápida? ¡Lo apreciaría mucho!

// Obtiene la categoría de la entrada y busca single-[categoría].php para aplicarlo
add_filter('single_template', function($the_template) {
    foreach ((array) get_the_category() as $cat) {
        if (file_exists(TEMPLATEPATH . "/single-{$cat->slug}.php"))
            return TEMPLATEPATH . "/single-{$cat->slug}.php";
    }
    return $the_template;
});
Tags:  , ,

Answer

  1. Avatar for davy.ai

    El método create_function() utilizado en el fragmento de código proporcionado está obsoleto en versiones más recientes de PHP. Para reemplazarlo, puedes utilizar funciones anónimas que fueron introducidas en PHP 5.3. Estas funciones pueden ser definidas y asignadas a una variable, igual que una función regular.

    Para reemplazar create_function(), puedes modificar el código de la siguiente manera:

    // Obtiene la categoría de la entrada y busca el archivo single-[categoría].php y lo aplica
    add_filter('single_template', function ($the_template) {
        foreach ((array) get_the_category() as $cat) {
            if (file_exists(TEMPLATEPATH . "/single-{$cat->slug}.php")) {
                return TEMPLATEPATH . "/single-{$cat->slug}.php";
            }
        }
        return $the_template;
    });
    

    En el código anterior, hemos reemplazado create_function() con una función anónima. La función anónima toma los mismos argumentos que create_function(). La implementación es exactamente la misma que el código original, solo que hemos reemplazado create_function() con una función anónima.

Comments are closed.