显示自定义 Post 类型元数据
Display Custom Post Type Metabox Data
我在页面模板中显示 metabox 数据时遇到问题 wp_query。我收到此错误:
注意:数组转字符串
这是我的代码:
<?php
// WP_Query arguments
$args = array (
'post_type' => array( 'portfolio' ),
'ignore_sticky_posts' => true,
'posts_per_page' => '10',
);
// The Query
$portfolio_query = new WP_Query( $args );
// The Loop
if ( $portfolio_query->have_posts() ) {
while ( $portfolio_query->have_posts() ) {
$portfolio_query->the_post();
echo '<div id="portfolio">';
echo '<div class="featured_img">';
echo '<a href="' . get_the_permalink() . '">' . " " . get_the_post_thumbnail() . '</a>';
echo '</div>';
echo '<div class="portfolio">';
echo the_title( '<h2>', '</h2>' );
echo '<p>' . the_excerpt() . '</p>';
echo '<p>' . get_post_meta( get_the_ID($post->id , 'project_metabox', false) ) . '</p>';
echo '</div>';
echo '</div>';
}
} else {
echo "<h1>There are no portfolio pieces to view.</h1>";
}
// Restore original Post Data
wp_reset_postdata(); ?>
我什么都试过了。这只是我尝试的最新版本。我做错了什么?
更新:
好的,所以我发现元数据没有保存。我不确定为什么,但我尝试修复它,但它不起作用。我的修复使情况变得更糟。这是我的代码:
`
public 函数 save_metabox( $post_id, $post ) {
// Check if it's not an autosave.
if ( wp_is_post_autosave( $post_id ) )
return;
// Sanitize user input.
$project_new_web_design = isset( $_POST[ 'project_web_design' ] ) ? 'checked' : '';
$project_new_web_development = isset( $_POST[ 'project_web_development' ] ) ? 'checked' : '';
$project_new_digital_art = isset( $_POST[ 'project_digital_art' ] ) ? 'checked' : '';
$project_new_graphic_design = isset( $_POST[ 'project_graphic_design' ] ) ? 'checked' : '';
// Update the meta field in the database.
update_post_meta( $post_id, 'project_web_design ', $project_new_web_design );
update_post_meta( $post_id, 'project_web_development ', $project_new_web_development );
update_post_meta( $post_id, 'project_digital_art ', $project_new_digital_art );
update_post_meta( $post_id, 'project_graphic_design ', $project_new_graphic_design );
}
}
我认为您遇到的问题是在这条线上:
echo '<p>' . get_post_meta( get_the_ID($post->id , 'project_metabox', false) ) . '</p>';
你好像把 get_the_ID
和 $post->ID
混在一起了。您还试图回显一个数组。
get_post_meta
的第三个参数会判断returned的值是字符串还是数组。使用 true
到 return 单个值。
改为:
echo '<p>' . get_post_meta( get_the_ID(), 'project_metabox', true ) . '</p>';
请注意,您正在尝试回显 the_excerpt()
等函数。您通常会发现以 the_
而非 get_the_
开头的函数将直接输出而不是 returning 值。此外the_excerpt()
会自动添加段落标签。
替换为:
echo '<p>' . the_excerpt() . '</p>';
有了这个:
the_excerpt();
我在页面模板中显示 metabox 数据时遇到问题 wp_query。我收到此错误:
注意:数组转字符串
这是我的代码:
<?php
// WP_Query arguments
$args = array (
'post_type' => array( 'portfolio' ),
'ignore_sticky_posts' => true,
'posts_per_page' => '10',
);
// The Query
$portfolio_query = new WP_Query( $args );
// The Loop
if ( $portfolio_query->have_posts() ) {
while ( $portfolio_query->have_posts() ) {
$portfolio_query->the_post();
echo '<div id="portfolio">';
echo '<div class="featured_img">';
echo '<a href="' . get_the_permalink() . '">' . " " . get_the_post_thumbnail() . '</a>';
echo '</div>';
echo '<div class="portfolio">';
echo the_title( '<h2>', '</h2>' );
echo '<p>' . the_excerpt() . '</p>';
echo '<p>' . get_post_meta( get_the_ID($post->id , 'project_metabox', false) ) . '</p>';
echo '</div>';
echo '</div>';
}
} else {
echo "<h1>There are no portfolio pieces to view.</h1>";
}
// Restore original Post Data
wp_reset_postdata(); ?>
我什么都试过了。这只是我尝试的最新版本。我做错了什么?
更新:
好的,所以我发现元数据没有保存。我不确定为什么,但我尝试修复它,但它不起作用。我的修复使情况变得更糟。这是我的代码: ` public 函数 save_metabox( $post_id, $post ) {
// Check if it's not an autosave.
if ( wp_is_post_autosave( $post_id ) )
return;
// Sanitize user input.
$project_new_web_design = isset( $_POST[ 'project_web_design' ] ) ? 'checked' : '';
$project_new_web_development = isset( $_POST[ 'project_web_development' ] ) ? 'checked' : '';
$project_new_digital_art = isset( $_POST[ 'project_digital_art' ] ) ? 'checked' : '';
$project_new_graphic_design = isset( $_POST[ 'project_graphic_design' ] ) ? 'checked' : '';
// Update the meta field in the database.
update_post_meta( $post_id, 'project_web_design ', $project_new_web_design );
update_post_meta( $post_id, 'project_web_development ', $project_new_web_development );
update_post_meta( $post_id, 'project_digital_art ', $project_new_digital_art );
update_post_meta( $post_id, 'project_graphic_design ', $project_new_graphic_design );
}
}
我认为您遇到的问题是在这条线上:
echo '<p>' . get_post_meta( get_the_ID($post->id , 'project_metabox', false) ) . '</p>';
你好像把 get_the_ID
和 $post->ID
混在一起了。您还试图回显一个数组。
get_post_meta
的第三个参数会判断returned的值是字符串还是数组。使用 true
到 return 单个值。
改为:
echo '<p>' . get_post_meta( get_the_ID(), 'project_metabox', true ) . '</p>';
请注意,您正在尝试回显 the_excerpt()
等函数。您通常会发现以 the_
而非 get_the_
开头的函数将直接输出而不是 returning 值。此外the_excerpt()
会自动添加段落标签。
替换为:
echo '<p>' . the_excerpt() . '</p>';
有了这个:
the_excerpt();