php – WordPress – 无法从自定义帖子类型的元数据中获取价值
发布时间:2020-12-13 22:25:03 所属栏目:PHP教程 来源:网络整理
导读:我无法从自定义帖子类型的元数据中获取值. 以下是我在自定义帖子类型中注册元数据的方法: register_post_type( 'poslovi-newsletter',array( 'labels' = array( 'name' = __( 'Poslovi newsletter' ),'hierarchical' = false,'singular_name' = __( 'Posalj
我无法从自定义帖子类型的元数据中获取值.
以下是我在自定义帖子类型中注册元数据的方法: 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' ) ); 这就是我如何处理在仪表板中自定义帖子类型上显示元数据,保存数据等… 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' ); 现在,一切正常.当我添加新帖子并输入数据时,它会保存包含该数据的帖子.当我发布var_dump帖子时,我会看到所有内容,内容,标题,日期等,但我没有看到任何元数据. 此外,当我这样做时(假设我想从id为37422的帖子中获取元数据) $meta_value = get_post_meta( 37422,true ); var_dump($meta_value); 我得到的是: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;?> 因此,您的post元值位于一个数组中,其中包含名称为meta-textarea的键,并且在该键中,该值是一个具有所需值的单个键的数组 Array ( [meta-textarea] => Array ( [0] => Tessst ) ) 我输入’Tessst’来检查它是否正常工作. 希望这可以帮助 :) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |