Desafío de etiquetas meta de WordPress

3 minutos de lectura

avatar de usuario
craig

Actualmente estoy tratando de crear un sitio para programas de televisión y, debido a ciertas limitaciones de WordPress, esto se está convirtiendo en un desafío.

Sin embargo, evito eso con el uso de la implementación de metacampos personalizados en el archivo functions.php, ahora mi problema es que lo necesito para crear activamente nuevos campos cuando envío información en el campo actual. Por ejemplo, los nombres de metabox personalizados son
(Episode Name="This is It") (Episode Number="1") (Season Number="5")

En lugar de tener que crear todas las cajas desde el principio, me gustaría usar Javascript (jQuery) o cualquier solución para crear automáticamente un nuevo conjunto de estas 3 cajas.
(Episode Name="") (Episode Number="") (Season Number="")

así que puedo ingresar la nueva información a medida que vienen. ¡Gracias de antemano por su ayuda!

Nota: He invertido demasiado tiempo en wordpress para simplemente cambiar a otro cms, por lo que no es una opción en este momento.

por lo que entiendo de su pregunta, está buscando una solución simple para automatizar el proceso de entrada. Tengo una idea general de lo que necesita lograr, ya que tuve que hacer algo similar en un sitio web tipo folleto.

Intenté responder a su pregunta usando Jquery, pero creo que aumenta la cantidad de entrada de texto requerida al crear su publicación, lamentablemente no existe un método completamente automatizado para hacerlo, pero espero que a continuación le brinde una solución.

primero encontré el siguiente complemento: Tipos: solución completa para campos y tipos personalizados aquí: http://wordpress.org/extend/plugins/tipos/

Esto le permite crear metacampos personalizados al crear una nueva publicación/página. Los campos personalizados se agregan con un prefijo de “wpcf-” y luego el nombre del campo, por ejemplo, “Nombre del episodio” se convierte en “wpcf-episode-name” en la base de datos.

La siguiente es una edición de la función get_meta de wordpress:

function get_specifications(){
    if ( $keys = get_post_custom_keys() ) {
    echo '<div class="entry_specifications">';
    foreach ( (array) $keys as $key ) {
        $keyt = trim($key);
            if ( '_' == $keyt[0] )
            continue;
            $values = array_map('trim', get_post_custom_values($key));
            $value = implode($values,', ');

            //remove "wpcf-"
            $key = str_replace('wpcf-','',$key);

            //convert "-" to a space " "
            $key = str_replace('-',' ',$key);

            //check if it has a value, continue if it does, skip if it doesn't:
            if ($value <> ''){
                echo apply_filters('the_meta_key', "
                <div class="meta_wrapper">
                    <div class="meta_title">$key</div>
                    <div class="meta_value">$value</div>
                </div>\n", $key, $value);
            };

        }

   }
   // echo '</div>'; comment out and remove the line below if you are not using floats in your css
   echo '</div><div class="clear"></div>';
}

En mi page.php (o tu template-page.php) agregué el siguiente código cuando/dónde quiero que se produzca el meta:

<?php

//check to see if there is meta data, as you only want the meta data on TV Program pages
$met_check = get_post_meta($post->ID, 'wpcf-features', true);

if ($met_check <> ''){ 
//if it has a value, spit out "About EpisodeName" ?>  
    <h2 class="post-title clear">About <?php echo $title ?></h2>

    <?php //perform the function from functions.php and return results:
    echo get_specifications();
}
?>

He diseñado el resultado con el siguiente CSS:

.meta_entry {
    clear:both;
}
.meta_title {
    float:left;
    text-transform:capitalize;
    width:200px;
}
.meta_value {
    float:left;
    width:480px;
}

¡Espero que esto ayude compañero!

Hay un complemento maravilloso para wordpress llamado vainas que podría ser una solución viable.

Probar http://wordpress.org/extend/plugins/custom-field-template/

¿Ha sido útil esta solución?