WordPress por defecto tiene campos predeterminados (título, imagen destacada, etc ) para el contenido de las entradas y páginas, sin embargo podemos añadir información extra a través de los custom fields o campos personalizados.
1- Generalidades
Para ver la sección de campos personalizados, lo puedes hacer desde la edición o creación de una entrada o página, en la parte superior en las opciones de pantalla, tal como se muestra en la siguiente imagen.

Al habilitar los campos personalizados verás que te aparece una nueva sección en la parte inferior.

Los campos personalizados constan de dos elementos: nombre ( que vendría ha ser el key) y valor
2- Crear campos personalizados
Para crear nuevos campos personalizados simplemente llena el nombre y valor, por ejemplo supongamos que estas creando contenido para cursos, entonces tendrás que colocar información adicional de:
- Fecha de inicio
- Profesor
- Nivel
- Horas
Tu entrada con campos adicionales quedará tal como se muestra en la siguiente imagen:

Estos campos que has agregado en la entrada anterior, estarán disponibles cuando agregues o edites una nueva entrada o página, tal como se muestra en la siguiente imagen:

3- Mostrar los campos personalizados
Por defecto, estos nuevos campos que has agregado no serán visibles en el front-end de tu sitio, por lo tanto, si quieres mostrarlos, tendrás que hacer algunas modificaciones a los archivos de tu theme.
Para obtener el campo personalizado usaremos la función get_post_meta() del core de WordPress.
Por ejemplo si quieres obtener el campo personalizado de Profesor de una determinada entrada, dentro del bucle de las entradas puedes usar el siguiente código PHP:
$cf_profesor = get_post_meta( get_the_ID(), 'Profesor', true );
if ($cf_profesor){
echo "Profesor: ".$cf_profesor;
}
En el código anterior:
- Dentro de la función get_post_meta usamos tres parámetros.
- Ya que todo este código estará en el bucle, la función get_the_ID(), devuelve el ID del post actual
- El nombre del campo personalizado es case sensitive, por lo que tiene que se escrito exactamente igual a como fue definido
- Ya que los campos personalizados pueden almacenar también arrays, el valor true indica que sólo devolveremos un valor
- Luego asignamos el valor devuelto a una variable llamada $cf_profesor
- Hacemos una validación para sólo mostrar el valor de la variable si esta tiene contenido
4- Ejemplo de modificación en theme Twenty Seventeen
Si estas usando el theme Twenty Seventeen y quieres mostrar los campos personalizados en el detalle de las entrada, entonces una primera idea sería ubicar el archivo single.php
El archivo single.php tiene el bucle pero muestra el contenido de una entrada haciendo referencia al archivo : template-parts/post/content.php, entonces las modificaciones tienes que hacerlas en este último archivo.
En el archivo content.php en la línea 71 aproximadamente, dentro de la condición que usa la función is_single(), puedes agregar el siguiente código:
$cf_fechaInicio = get_post_meta( get_the_ID(), 'Fecha-Inicio', true );
$cf_nivel = get_post_meta( get_the_ID(), 'Nivel', true );
$cf_profesor = get_post_meta( get_the_ID(), 'Profesor', true );
$cf_horas = get_post_meta( get_the_ID(), 'Horas', true );
if ($cf_fechaInicio) echo "Fecha Inicio: ".$cf_fechaInicio."<br>";
if ($cf_profesor) echo "Profesor: ".$cf_profesor."<br>";
if ($cf_nivel) echo "Nivel: ".$cf_nivel."<br>";
if ($cf_horas) echo "Horas: ".$cf_horas."<br>";
El contenido de los campos personalizados te aparecerá al final de cada entrada, tal como se muestra a continuación:

¿Aún con dudas?, en el siguiente video se explica cada uno de los puntos tratados anteriormente.
Hola John¡¡
Muy bueno el post y el blog en general, que acabo de descubrir. Aunque veo que hay un nivel bastante superior a mis conocimientos acabas de ganar un fiel seguidor.
Un saludo
Hola y si quiero mostrar todos los post en una solo pagina y que me muestre todos los campos personalizados de cada post como seria el código.
Hola, en ese caso tienes que buscar el archivo .php de tu theme que lista las entradas, posiblemente sea: category.php, archive.php o index.php, puedes revisar: https://decodecms.com/jerarquia-de-archivos-de-plantilla-en-wordpress/