Include custom fields into the content of a regular page

Here's my setup:

  • Parent "Gallery" page: _regular page, not custom type or anything _
  • Several "Project" child pages (could be as few as 1, unlimited
    number): also normal pages

Child pages will either have meta boxes or custom fields for entering stuff into my pre-formatted areas. I don't care if it's meta boxes or custom fields, whatever is figure-outable!

I'm using standard WP-provided code to show Child page titles and the_content on the Parent page.

    ?php
    $mypages = get_pages( array( 'child_of' = $post-ID, 'sort_column' = 'post_date', 'sort_order' = 'desc' ) );

    foreach( $mypages as $page ) {
    $content = $page-post_content;
    if ( ! $content ) // Check for empty page
    continue;

    $content = apply_filters( 'the_content', $content );
?

    div class="gallery-wrapper"
        div class="body"
            div id="zoom"
                span/span
                ?php echo $content; ?
            /div
            a href="" rel="lightbox"Click to enlarge and view project gallery/a
        /div

        div class="sidebar" style="margin-bottom: 30x; padding-top: 20px;"
            h3?php echo $page-post_title; ?/h3
            pstrongGoal:/strong ?php echo get_post_meta($post-ID, 'ecpt_goal', false); ?/p
            pstrongChallenge:/strong ?php echo $ecpt_challenge; ?/p
            pstrongSolution:/strong ?php echo $ecpt_solution; ?/p
            pstrongResults:/strong ?php echo $ecpt_results; ?/p
        /div
    /div
        div class="clear-border" /div

        !--- ---
?php
}   
?

None of the custom areas are showing up on the Parent page. I have no idea how to filter them, and ideally would like to include the custom fields OR metaboxes into the_content.

pstrongGoal:/strong ?php echo get_post_meta($post-ID, 'ecpt_goal', false); ?/p
pstrongChallenge:/strong ?php echo $ecpt_challenge; ?/p

Both of these lines work to pull the meta box info into the individual Child page, not sure what the difference is, including just for reference.

Alternatively, if you know how to include custom fields into the_content, here's what I'm using with ACF:

h3?php the_field(client_title_1); ?/h3
strongGoal:/strong ?php the_field(goal_1); ?
strongChallenge:/strong ?php the_field(challenge_1); ?

ETC.

Thank you very much in advance!

EDITED TO ADD: Is there a way to add my custom meta boxes or fields to the default set so they would automatically be included into the_content without filters and hooks?

Topic the-content metabox custom-field Wordpress

Category Web


Whatever plugin you use for custom fields or custom metaboxes always remember the meta_key, e.g; 'ecpt_goal' for goal metabox/custom field.

to get the saved value for the metabox/custom field you can use get_post_meta('post_id', 'meta_key', 'single' ) function. visit codex get_post_meta

$goal = get_post_meta( get_the_ID(), 'ecpt_goal', true );
$ecpt_challenge = get_post_meta( get_the_ID(), 'ecpt_challenge', true );
$ecpt_solution = get_post_meta( get_the_ID(), 'ecpt_solution', true );
$ecpt_results = get_post_meta( get_the_ID(), 'ecpt_results', true );

if ( $goal != '' ) {
    echo '<p><strong>Goal : </strong>'.$goal.'</p>';
}
if ( $ecpt_challenge != '' ) {
    echo '<p><strong>Challenge : </strong>'.$ecpt_challenge.'</p>';
}
if ( $ecpt_solution != '' ) {
    echo '<p><strong>Solution : </strong>'.$ecpt_solution.'</p>';
}
if ( $ecpt_results != '' ) {
    echo '<p><strong>Results : </strong>'.$ecpt_results.'</p>';
}

When using a plugin to add custom fields, I usually do something like this:

var_dump(get_post_custom());

(http://codex.wordpress.org/Function_Reference/get_post_custom)

I do this usually because every (decent) plugin will add a prefix to the custom fields. Once I have the name of the field, I can use get_post_meta() to place the field in the template.

However, using this plugin, you have an even easier approach. It provides functions that aid you in displaying your custom fields: get_field(), and the_field().

To display them in your template, you are either going to have to add the fields manually to the template - or create a filter for the_content and use a function to append them to the content automatically. (The latter is probably the best approach if you need the change to affect multiple templates).


where are you setting $ecpt_challenge, $ecpt_solution and $ecpt_results?

also get_post_meta($post->ID, 'ecpt_goal', false); returns an array, so use

print_r ( get_post_meta($post->ID, 'ecpt_goal', false));

OR for single result pass "true" in the last argument.

 echo get_post_meta($post->ID, 'ecpt_goal', true);

reference: get_post_meta() @codex

About

Geeks Mental is a community that publishes articles and tutorials about Web, Android, Data Science, new techniques and Linux security.