반응형
WordPress - 사용자 지정 게시물 유형의 메타박스에서 값을 가져올 수 없습니다.
사용자 지정 게시물 유형의 메타박스에서 값을 얻는 데 어려움이 있습니다.
사용자 지정 게시물 유형에 메타박스를 등록하는 방법은 다음과 같습니다.
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 post를 하면 내용, 제목, 날짜 등이 모두 보이는데 메타데이터는 보이지 않습니다.
또한 이렇게 할 때 (아이디 37422로 게시물에서 메타데이터를 받고 싶다고 하자)
$meta_value = get_post_meta( 37422, 'meta-textarea', 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;?>
그래서 당신의 포스트 메타 값은 다른 것들 중에서 이름과 함께 핵심적인 것을 가진 배열에 있습니다.meta-textarea
, 이 키에서 값은 원하는 값을 가진 단일 키를 가진 배열입니다.
Array (
[meta-textarea] => Array (
[0] => Tessst
)
)
'Tessst'를 입력하여 작동하는지 확인했습니다.
도움이 되길 바라요 :)
언급URL : https://stackoverflow.com/questions/34512534/wordpress-cant-get-value-from-metabox-in-custom-post-type
반응형
'source' 카테고리의 다른 글
그룹의 첫 번째 값과 마지막 값 선택 (0) | 2023.09.16 |
---|---|
ajax 새로 고침에 대한 구성 요소 대체 보기 (0) | 2023.09.16 |
Angular 4.3.3 HttpClient : 응답의 헤더에서 값을 얻는 방법은? (0) | 2023.09.16 |
Query runs quickly in Oracle SQL Developer, but slowly in SSRS 2008 R2 (0) | 2023.09.16 |
도커: 드라이버가 끝점 웹 서버에서 외부 연결을 프로그래밍하지 못했습니다. (0) | 2023.09.16 |