我创建了一个single file plugin 它结合了以下所有代码以便于使用,部分是出于无聊。
显示当前标题很简单echo get_the_title();
它实际上就是要在哪里显示它,以及如何通过HTML包装它。
WordPress没有字幕,所以您必须创建custom post meta 保存和显示此数据。如果您不熟悉post meta,那么它只是附加到帖子上的附加数据,我们可以在以后发布和访问时提交。通常有3个钩子允许您创建post元字段:
所有这些都是有效的选项,但用户在管理屏幕时很明显,在主标题框下方放置字幕输入框是最简单的。我们可以通过向函数文件中添加以下代码来实现这一点:
/**
* Edit the post-edit form after title input
*
* @param WP_Post $post - Current post object
*
* @return void
*/
function wpse_subtitle_metadisplay( $post ) {
// Post types to display the subtitle field
$acceptable_types = array( \'page\' );
// Ensure this post type meets our criteria
if( empty( $acceptable_types ) || ! in_array( $post->post_type, $acceptable_types ) ) {
return;
}
// Get our field value, if it exists
$subtitle = get_post_meta( $post->ID, \'wpse_subtitle\', true );
// Set a security nonce
wp_nonce_field( \'wpse279493_subtitle_metadisplay\', \'wpse279493_subtitle_metadisplay_field\' );
// Display the input in a similar fashion to the post title input box
printf( \'<input type="text" name="wpse_subtitle" id="wpse_subtitle" class="widefat" value="%1$s" placeholder="%2$s" style="margin:8px 0 0 0;padding:3px 8px;font-size:1.7em;" />\',
esc_attr( $subtitle ),
__( \'Enter subtitle here\' )
);
}
add_action( \'edit_form_after_title\', \'wpse_subtitle_metadisplay\' );
现在我们正在显示输入字段,我们需要使用
save_post
钩
/**
* Save the subtitle metadata
*
* @param Integer $post_id - Current Post ID
* @param WP_Post Object $post - Current Post Object
*
* @return void
*/
function wpse_save_subtitle_metadata( $post_id, $post ) {
// If we\'re not in the right place, bailout!
if( ! isset( $post ) || wp_is_post_autosave( $post ) || wp_is_post_revision( $post ) ) {
return false;
}
// Ensure our nonce is intact
if( isset( $_POST, $_POST[\'wpse279493_subtitle_metadisplay_field\'] ) && wp_verify_nonce( $_POST[\'wpse279493_subtitle_metadisplay_field\'], \'wpse279493_subtitle_metadisplay\' ) ) {
// Save our subtitle metadata OR delete postmeta if left empty
if( isset( $_POST[\'wpse_subtitle\'] ) && ! empty( $_POST[\'wpse_subtitle\'] ) ) {
// Save out data to our post
update_post_meta( $post_id, \'wpse_subtitle\', sanitize_text_field( $_POST[\'wpse_subtitle\'] ) );
} else {
// If input is empty, delete the value from the database to keep clutter free!
delete_post_meta( $post_id, \'wpse_subtitle\' );
}
}
}
add_action( \'save_post\', \'wpse_save_subtitle_metadata\', 10, 2 );
最后,现在我们都在显示字幕字段并保存给定的输入,我们所需要做的就是显示这些信息。我们可以通过使用
get_post_meta()
.
导航希望标题显示的位置,并输入以下内容:
<?php
global $post;
$subtitle = get_post_meta( $post->ID, \'wpse_subtitle\', true );
?>
<h1><?php echo get_the_title(); ?></h1> <!-- display main title -->
<?php if( ! empty( $subtitle ) ) : ?>
<h2><?php echo $subtitle; ?></h2> <!-- display sub title -->
<?php endif; ?>
一旦它们显示在前端,您就可以根据自己的喜好对其进行样式设置。