¿Cómo puedo crear diferentes secciones editables dentro de una página de Wordpress?


He estado construyendo mi primer tema en WordPress y me he encontrado con problemas al agregar contenido en diferentes secciones.

Mi HTML es algo así,

<div id="maintext">
   <-- Text -->
</div>
<div id="products">
   <-- Text and Images -->
</div>
<div id="about_company">
   <-- Text boxes -->
</div>

¿Cómo me aseguro de que el contenido agregado a través del editor de Wordpress caiga bajo los divs respectivos ? Para el div" maintext " cargaré el contenido de la página en sí, pero ¿cómo agrego contenido a los otros 2 divs dinámicamente ?

Busqué en un par de foros y muchos sugirieron agregar contenido usando widgets, ¿hay alguna forma de hacerlo sin usar widgets ?

Cualquier ayuda será agradecida.

Author: Vinith Almeida, 2013-09-05

6 answers

Desafortunadamente agregar múltiples campos editables en una sola página no es particularmente fácil usar Wordpress por sí mismo.

Muchos desarrolladores de WP que conozco (incluido yo mismo) confían en el Complemento Advanced Custom Fields para campos de contenido adicionales.

Los pasos para hacer que esto suceda:

1) Instale el ACF el enchufe.
2) En el área de configuración de ACF, cree algunos campos nuevos.
3) Asigne los nuevos campos para que aparezcan para una página o conjunto de páginas específicas.
4) Actualice su página-plantilla para la(s) página (s) dada (s) para que se muestren los nuevos campos.

Por ejemplo, puede crear un conjunto de campos wysiwyg estándar y luego asignarlos a la página 'overview'. Llamemos a estos campos: main_text, products_info y about_company. Una vez que los campos se hayan creado y asignado a una página, cuando edite esa página, los campos adicionales estarán disponibles para editar.

Para que estos nuevos campos sean vistos por los visitantes, deben agregarse a la plantilla de página que utilice para su página de resumen. El código podría ser algo así:

<div id="maintext">
   <!-- Text -->
   <?php if(get_field('main_text')){ //if the field is not empty
        echo '<p>' . get_field('main_text') . '</p>'; //display it
    } ?>
</div>
<div id="products">
   <!-- Text and Images -->
   <?php if(get_field('products_info')){ //if the field is not empty
        echo '<p>' . get_field('products_info') . '</p>'; //display it
    } ?>
</div>
<div id="about_company">
   <!-- Text boxes -->
   <?php if(get_field('about_company')){ //if the field is not empty
        echo '<p>' . get_field('about_company') . '</p>'; //display it
    } ?>
</div>

Hay muchos buenos ejemplos aquí. Si te sientes realmente ambicioso, en lugar de instalar el plugin, incluso podrías incluir ACF directamente en tu tema.

 73
Author: metaColin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-11 18:12:31

Creo que tienes tres opciones:

  1. Cree un área de widget donde luego puede mostrar el contenido en un widget de texto: http://codex.wordpress.org/Function_Reference/register_sidebar
  2. Cree una plantilla donde luego obtenga el contenido de una página diferente: http://codex.wordpress.org/Page_Templates#File_Folders
  3. Crea un nuevo meta box para todas tus páginas: http://codex.wordpress.org/Function_Reference/add_meta_box

Creo que lo que estás buscando es la opción 2. Los otros están más orientados al sitio completo, si quieres que el contenido extra aparezca en cada página.

 5
Author: user2019515,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-05 07:36:10
 4
Author: Manish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-05 09:25:44

Si está escribiendo el tema, tal vez le gustaría considerar el uso de un marco de WordPress para que no tenga que empezar desde cero.

Si ese no es el caso, piense en el usuario final. ¿Cómo agregarán secciones a páginas y publicaciones? ¿Tendrán que moverse a través de lugares dentro de la interfaz de usuario de WordPress, o preferirían códigos cortos de usuario?

Mi recomendación es construir un plugin que renderice la sección dentro del contenido del documento. O contenido del widget si ese es el caso.

Escribí un pequeño fragmento de código para ilustrar cómo puedes lograr tal cosa, y también porque lo necesito ahora mismo: D. Puedes encontrarlo en github aquí https://github.com/lionpage/Front-Office-Document-Sections

Espero que esto ayude

 2
Author: Page Carbajal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-20 04:52:36

Me he encontrado con este tema varias veces, y aunque la pregunta tiene 3 años, creo que sigue siendo bastante actual. He utilizado con éxito el plugin de Bloques de Contenido múltiple a veces ahora:

Https://ltz.wordpress.org/plugins/multiple-content-blocks /

Después de instalar el plugin, puedes incluir the_block en tu plantilla:

<div id="maintext">
   <?php the_content(); ?>
</div>
<div id="products">
   <?php the_block('products') ?>
</div>
<div id="about_company">
   <?php the_block('company') ?>
</div>
 0
Author: Grimace of Despair,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-24 20:34:47

Estaba luchando con esto, y no quería usar un plugin. La única opción nativa de Wordpress que encontré fue usar Campos personalizados. Esto funciona, pero solo para texto, y es bastante engorroso.

La otra opción no-plugin es simplemente utilizar HTML en el editor de Wordpress, pero esto es, por supuesto, lejos de ser ideal tampoco.

Finalmente me di por vencido, y opté por el plugin Advanced Custom Fields también.

 0
Author: kregus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-20 12:44:48