Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

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?

share|improve this question

2 Answers 2

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

share|improve this answer
    
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 '12 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. –  peteroak Aug 4 '12 at 2:56

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

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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