0

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>
            <p><strong>Goal:</strong> <?php echo get_post_meta($post->ID, 'ecpt_goal', false); ?></p>
            <p><strong>Challenge:</strong> <?php echo $ecpt_challenge; ?></p>
            <p><strong>Solution:</strong> <?php echo $ecpt_solution; ?></p>
            <p><strong>Results:</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.

<p><strong>Goal:</strong> <?php echo get_post_meta($post->ID, 'ecpt_goal', false); ?></p>
<p><strong>Challenge:</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>
<strong>Goal:</strong> <?php the_field(goal_1); ?>
<strong>Challenge:</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?

3 Answers 3

0

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

3
  • Decided to use Advanced Custom Fields for this, not the meta boxes (several reasons). So instead of ECPT_stuff I've got <?php the_field(goal); ?> etc. Are you familiar with ACF?
    – Phantasmix
    Aug 4, 2012 at 2:13
  • sorry, can't say i do. however, looking at their documentation, i can see that you could use shortcodes [acf field="{$field_name}"], skipping, like you asked, the hooks and filters. but has to be inserted manually without those.
    – pcarvalho
    Aug 4, 2012 at 2:56
  • ACF is simply a wrapper for meta boxes. the function the_field( 'goal' ) does the same thing as echo get_post_meta( $post->ID, 'goal', true ); Note that ACF probably adds a prefix to the field id\s
    – Jebble
    Jul 14, 2017 at 9:38
0

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).

0

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>';
}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.