admin管理员组

文章数量:1122846

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?

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 edited Aug 3, 2012 at 11:36 kaiser 50.8k27 gold badges150 silver badges244 bronze badges asked Aug 2, 2012 at 21:26 PhantasmixPhantasmix 1501 silver badge15 bronze badges
Add a comment  | 

3 Answers 3

Reset to default 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

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

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

本文标签: metaboxInclude custom fields into the content of a regular page