我创建了一个自定义帖子类型,可以使用WordPress的查询循环块来显示这些帖子。
但是我在将元数据从这些自定义帖子类型拉到查询循环块时遇到了一些麻烦。不幸的是,该块没有任何框来检查元数据。
这可能吗?你有什么提示吗?我错过了什么吗?
我试着创建一个短代码来从循环中提取元数据,并将该短代码放入查询循环块中,但没有效果。它创建了(太多)div,但里面没有内容。以下是我的短代码:
add_shortcode( 'shortcode_metabox', 'site_shortcode_metabox' );
function site_shortcode_metabox( $atts ) {
$output = '';
ob_start();
include( plugin_dir_path( __FILE__ ) . 'shortcode_metabox_php.php');
$output .= ob_get_clean();
return $output ;
}
和"shortcode_metabox_php. php"文件中的所有内容:
<?php
$args = array(
'post_type' => 'team_members',
'lang' => pll_current_language(),
);
$the_query = new WP_Query( $args );
while ( $the_query->have_posts() ) : $the_query->the_post();
?>
<div class="team-m-metabox">
<?php
$custom_metabox_zusatz = get_post_meta($post->ID, 'custom_metabox_zusatz', true);
echo $custom_metabox_zusatz;
?>
</div>
<?php
endwhile; // End of the loop.
?>
自定义帖子类型的元数据由以下代码创建:
// Register Metabox - Zusatz
// Add field:
add_action( 'add_meta_boxes', function() {
add_meta_box(
'site_custom_metabox_zusatz',
'Zusatz',
function( $post ) {
wp_nonce_field( __FILE__, 'custom_metabox_zusatz_nonce' );
?>
<p><input type="text" class="large-text" name="custom_metabox_zusatz" value="<?php echo esc_attr( get_post_meta( $post->ID, 'custom_metabox_zusatz', true ) ); ?>"></p>
<?php
},
'team_members',
'side'
);
} );
// Save field.
add_action( 'save_post', function( $post_id ) {
if ( isset( $_POST['custom_metabox_zusatz'], $_POST['custom_metabox_zusatz_nonce'] ) && wp_verify_nonce( $_POST['custom_metabox_zusatz_nonce'], __FILE__ ) ) {
update_post_meta( $post_id, 'custom_metabox_zusatz', sanitize_text_field( $_POST['custom_metabox_zusatz'] ) );
}
} );
我使用:
'team_members'
作为我自定义帖子类型分类
请帮帮我。谢谢。
2条答案
按热度按时间bmvo0sr51#
我已经解决了Query块的相同问题,并最终创建了一个新的带有server side rendering的Gutenberg块,这样我就可以使用
get_post_meta(...)
通过PHP检索post meta。我发现核心的post author name块是一个很好的起点。由于我的自定义post类型有许多不同的可能的meta键,我还为post meta块创建了block variations。所以我可以很容易地插入使用meta_key
所需的,例如。在. json块中,我将
metaKey
定义为一个属性,并添加了usesContext
,它提供对postType和postId的访问。在编辑器视图中,我添加了UI控件来调整元值的格式(例如日期、地址格式)。格式保存在块属性中,并传递给服务器端呈现回调来格式化元值以供显示。这比传统的PHP方式设置新块要花费更多的精力,但是如果你不熟悉Gutenberg block building的话,还有a script for that。一旦你创建了你自己的post meta块,你就可以很容易地把它插入到你的 * Query Loop * 块的 * Post Template * 中。
zkure5ic2#
如果有人想知道,S.沃尔什的解决方案目前由于bug而不起作用。