Pet*_*vic 5 php wordpress metadata meta-boxes custom-post-type
我很难从自定义帖子类型的metabox中获取值。
这是我在自定义帖子类型中注册metabox的方法:
register_post_type( 'poslovi-newsletter',
array(
'labels' => array(
'name' => __( 'Poslovi newsletter' ),
'hierarchical' => false,
'singular_name' => __( 'Posalji newsletter' )
),
'public' => true,
'exclude_from_search' => true,
'menu_icon' => 'dashicons-email',
'register_meta_box_cb' => 'add_bez_oznaka_text_metabox'
)
);
Run Code Online (Sandbox Code Playgroud)
这就是我处理显示板中自定义帖子类型的元框,保存数据等的方式。
function add_bez_oznaka_text_metabox() {
add_meta_box('poslovi_newsletter_meta', 'Tekst mejla za korisnike bez oznaka', 'bez_oznaka_textarea', 'poslovi-newsletter', 'normal', 'default');
}
add_action( 'add_meta_boxes', 'add_bez_oznaka_text_metabox' );
function bez_oznaka_textarea( $post ) {
wp_nonce_field( basename( __FILE__ ), 'poslovi_newsletter_nonce' );
$poslovi_newsletter_stored_meta = get_post_meta( $post->ID );
?>
<p>
<label for="meta-textarea" class="poslovi_newsletter-row-title"><?php _e( 'Tekst mejla', 'poslovi_newsletter-textdomain' )?></label>
<textarea name="meta-textarea" id="meta-textarea" style="width: 100%; min-height: 200px;"><?php if ( isset ( $poslovi_newsletter_stored_meta['meta-textarea'] ) ) echo $poslovi_newsletter_stored_meta['meta-textarea'][0]; ?></textarea>
</p>
<?php
}
function poslovi_newsletter_meta_save( $post_id ) {
// Checks save status
$is_autosave = wp_is_post_autosave( $post_id );
$is_revision = wp_is_post_revision( $post_id );
$is_valid_nonce = ( isset( $_POST[ 'poslovi_newsletter_nonce' ] ) && wp_verify_nonce( $_POST[ 'poslovi_newsletter_nonce' ], basename( __FILE__ ) ) ) ? 'true' : 'false';
// Exits script depending on save status
if ( $is_autosave || $is_revision || !$is_valid_nonce ) {
return;
}
// Checks for input and saves if needed
if( isset( $_POST[ 'meta-textarea' ] ) ) {
update_post_meta( $post_id, 'meta-textarea', $_POST[ 'meta-textarea' ] );
}
}
add_action( 'save_post', 'poslovi_newsletter_meta_save' );
Run Code Online (Sandbox Code Playgroud)
现在,一切正常。当我添加新帖子并输入数据时,它将与该数据一起保存。例如,当我在var_dump帖子中时,我看到了所有内容,内容,标题,日期等,但是看不到任何元数据。
另外,当我这样做时(假设我想从ID为37422的帖子中获取元数据)
$meta_value = get_post_meta( 37422, 'meta-textarea', true );
var_dump($meta_value);
Run Code Online (Sandbox Code Playgroud)
我得到以下说法:string(0)“”
我可能会弄错负责保存部分代码的某些部分,但无法弄清楚到底是什么。
好的,所以我对您的自定义帖子类型进行了一些修改,它对我有用。
我创建了一个页面模板来输出帖子类型的所有帖子poslovi-newsletter。php 部分如下所示:
<?php
$args = array(
'post_type' => 'poslovi-newsletter',
'posts_per_page'=>-1,
);
$posts = new WP_Query( $args );
$out = '';
if ($posts->have_posts()){
while ($posts->have_posts()){
$posts->the_post();
$meta = get_post_meta($post->ID);
$out.= '<div class="test">'.$meta['meta-textarea'][0].'</div>';
}
}
else{
echo '<p>' . __('No Posts Found.') . '</p>';
}
?>
<?php echo $out;?>
Run Code Online (Sandbox Code Playgroud)
因此,您的帖子元值位于一个数组中,该数组除其他外具有名称为 key 的键meta-textarea,并且该键中的值是一个数组,其中包含带有您所需值的单个键
Array (
[meta-textarea] => Array (
[0] => Tessst
)
)
Run Code Online (Sandbox Code Playgroud)
我输入了“Tessst”来检查它是否正常工作。
希望这可以帮助 :)
| 归档时间: |
|
| 查看次数: |
806 次 |
| 最近记录: |