发布价值信息
Wordpress、Software、VPN。。

利用add_meta_boxes为WordPress文章添加来源功能

当你使用WordPress发布文章的时候,有时或许会偷一下懒,直接从某个网站转载文章,为了尊重原作者的版权,你可能会注明来源。在WordPress中,你可以直接将来源放置在内容中,也可以单独利用meta字段记录下来。今天就教大家使用后者来实现来源功能。

首先按照惯例我们需要在 WordPress 的 functions.php 文件添加以下代码:

if ( !function_exists( 'post_meta_boxes_setup' ) ) {
function post_meta_boxes_setup() {
/* Add meta boxes on the 'add_meta_boxes' hook. */
add_action( 'add_meta_boxes', 'add_post_meta_boxes' );
/* Save post meta on the 'save_post' hook. */
add_action( 'save_post', 'save_post_source_meta', 10, 2 );
 
}
}
 
if ( !function_exists( 'add_post_meta_boxes' ) ) {
function add_post_meta_boxes() {
add_meta_box(
'post-source', // Unique ID
esc_html__( '文章来源', 'low-text' ), // Title
'post_source_meta_box', // Callback function
'post', // Admin page (or post type)
'normal', // Context
'high' // Priority
);
}
}
 
/* Display the post meta box. */
if ( !function_exists( 'post_source_meta_box' ) ) {
function post_source_meta_box( $object, $box ) { ?>
 
<?php wp_nonce_field( basename( __FILE__ ), 'post_source_nonce' ); ?>
 
<p>
<label for="post-source"><?php _e( "添加文章来源,请直接输入网址。", 'low-text' ); ?></label>
<br />
<input class="widefat" type="text" name="post-source" id="post-source" value="<?php echo esc_html__( get_post_meta( $object->ID, 'post_source', true ) ); ?>" size="30" />
</p>
 
<?php }
}
 
/* Save the meta box's post metadata. */
if ( !function_exists( 'save_post_source_meta' ) ) {
function save_post_source_meta( $post_id, $post ) {
 
/* Verify the nonce before proceeding. */
if ( !isset( $_POST['post_source_nonce'] ) || !wp_verify_nonce( $_POST['post_source_nonce'], basename( __FILE__ ) ) )
return $post_id;
 
/* Get the post type object. */
$post_type = get_post_type_object( $post->post_type );
 
/* Check if the current user has permission to edit the post. */
if ( !current_user_can( $post_type->cap->edit_post, $post_id ) )
return $post_id;
 
/* Get the posted data and sanitize it for use as an HTML class. */
$new_meta_value = ( isset( $_POST['post-source'] ) ? balanceTags( $_POST['post-source'] ) : '' );
 
/* Get the meta key. */
$meta_key = 'post_source';
 
/* Get the meta value of the custom field key. */
$meta_value = get_post_meta( $post_id, $meta_key, true );
 
/* If a new meta value was added and there was no previous value, add it. */
if ( $new_meta_value && '' == $meta_value )
add_post_meta( $post_id, $meta_key, $new_meta_value, true );
 
/* If the new meta value does not match the old value, update it. */
elseif ( $new_meta_value && $new_meta_value != $meta_value )
update_post_meta( $post_id, $meta_key, $new_meta_value );
 
/* If there is no new meta value but an old value exists, delete it. */
elseif ( '' == $new_meta_value && $meta_value )
delete_post_meta( $post_id, $meta_key, $meta_value );
} }

添加了上面代码之后我们就可以在后台编辑文章的时候看到我们的成果了,如下图所示。

add_meta_boxes

利用add_meta_boxes为WordPress文章添加来源功能

前端文章页显示的代码

在single.php或根据实际情况,放置下面的代码:

<?php the_content(); ?>
<?php if(get_post_meta($post->ID, "post_source", true)): ?>
<p class="source"><i class="fa fa-link"></i>来源:<?php echo esc_url(get_post_meta($post->ID, "post_source", true)); ?></p>
<?php endif; ?>

我们把来源字体的颜色设置为比正常文章内容字体的颜色淡一点,在css文件中添加如下CSS代码:

#content-area p.source{
text-indent: 0px;
font-size: 15px;
color: #999;
}
 
#content-area p.source a{
font-weight: 500;
}
 
#content-area p.source i{
margin-right:10px;
}

现在我们来看看完成之后前端显示情况

add_meta_boxes

利用add_meta_boxes为WordPress文章添加来源功能

到这里就全部完成了。
PS:add_meta_boxes除了添加文章来源之外,你还可以利用它作其他的用途,比如某些下载站可以利用它用作下载地址的添加。

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

×
打赏作者
赞(0)           打赏本站
未经允许不得转载:何先生 » 利用add_meta_boxes为WordPress文章添加来源功能
分享到: 更多 (0)

Comments 3

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. 沙发

    还是可以的,对于一些转载的文章有用

    憧憬点滴记忆
    1
    1年前 (2017-02-12)回复 Google Chrome 56.0.2924.87| Windows 10 x64| 四川省 电信
  2. 板凳

    效果很不错,比如直接添加自定义栏目更直观

    boke112导航
    2
    1年前 (2017-02-13)回复 Google Chrome 45.0.2454.101| Windows 7 x64| 广西南宁市 电信
    • @boke112导航 这个其实就是自定义栏目,只不过把它简化操作了,嘿嘿

      何先生
      管理员
      1年前 (2017-02-14)回复 Google Chrome 56.0.2924.87| Windows 10 x64| 四川省成都市 电信

何先生的博客 专注分享 更优质

联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

一木禾赚钱网盘:

点击注册