Products
GG网络技术分享 2025-03-18 16:12 0
在编辑文章页面右侧边栏的发布元框中创建一个数字自定义字段。字段值将保存在postmeta表中,我们稍后将使用它来更改文章顺序。
有关发布元框中的自定义字段,请参阅下面的代码。
add_action('post_submitbox_misc_actions','add_publish_meta_custom_field');functionadd_publish_meta_custom_field($post_obj){
global$post;
$post_type='post';
$value=get_post_meta($post_obj->ID,'post_order',true);
$val=($value)?$value:"0";
if($post_type==$post->post_type){
echo'<DIVCLASS="MISC-PUB-SECTIONMISC-PUB-SECTION-LAST">'
.'PostOrder<INPUTNAME="POST_ORDER"TYPE="NUMBER"STEP="1"MIN="0"ID="POST_ORDER"VALUE="'.$VAL.'"CLASS="SMALL-TEXT">'
.'
';
}}
以上将在发布元框中创建自定义字段,您将看到如下图所示的字段。
发布元框中的自定义字段
保存自定义字段的值
现在,我们必须保存PostOrder字段的值。所以我们将save_post在保存文章之前运行动作钩子,并update_post_meta()用于保存相应文章的字段值。
update_post_meta()操作将值与文章ID一起保存在wp_postmeta表中。
好的。请参阅代码以保存该自定义字段的值。
add_action('save_post','save_publish_meta_custom_field',10,3);functionsave_publish_meta_custom_field($post_id,$post,$update){
$post_type='post';
if($post_type!=$post->post_type){
return;
}
if(wp_is_post_revision($post_id)){
return;
}
if(isset($_POST['post_order'])){
update_post_meta($post_id,'post_order',$_POST['post_order']);
}
}
上面的代码将自定义字段值保存在数据库中,并将显示在该输入数字字段中。
自定义字段中保存的值
按自定义字段更改WordPress文章的顺序
现在,我们将使用我们自己的顺序值更改WordPress文章的默认顺序。在显示结果之前,我们将运行pre_get_posts动作钩子来修改现有的WP_Query文章。
pre_get_posts给我们一些解决方案来修改wp_query无需编写自定义WP_Query。
functionpre_custom_post_order_sort($query){
if(is_home()&&$query->is_main_query()){
$query->set('orderby','meta_value');
$query->set('meta_key','post_order');
$query->set('order','ASC');
}}add_action('pre_get_posts','pre_custom_post_order_sort');
上面的代码示例将更改博客页面或主页上的WordPress文章顺序。
我们在这篇文章中检查了一个主要查询和主页,然后使用meta_key元值设置查询顺序。它将检查文章是否具有自定义字段值,并根据字段值将它们置于顶部。
在模板文件中按自定义字段排序WordPress文章
您还可以创建自己的自定义WP_Query以按顺序显示文章。
您必须创建一个WordPress自定义模板页面,然后您可以在该模板中编写自己的查询。
在此处查看有关如何在WordPress中创建自定义页面模板的分步指南。
好的。您现在有一个自定义模板文件。因此,在该模板中编写以下代码。
$args=array(
'post_type'=>'post',
'meta_key'=>'post_order',
'orderby'=>'meta_value',
'order'=>'ASC');
$query=newWP_query($args);
if($query->have_posts()){
while($query->have_posts()){
$query->the_post();
if(!empty(get_post_meta($post->ID,'post_order',true))){
the_title();
}
wp_reset_postdata();}
上面的代码将按自定义字段值显示文章标题顺序,并根据自定义字段值将文章置于顶部。
您还可以在functions.php文件中创建上述代码的简码,并在小工具、页面或您想要显示文章的任何地方使用该简码。
就是这样。您已完成按自定义字段值显示WordPress文章顺序。
我们在做wordpress网站中常常需要调用文章列表,热门文章,最新文章,和随机文章,今天这篇文章给大家分享,通过浏览量来调用文章的方法。
首先在主题函数function.php中加入以下代码:
//网站浏览量统计代码functionthemetuts_record_visitors(){if(is_singular()){
global$post;$post_ID=$post->ID;if($post_ID){$post_views=(int)get_post_meta($post_ID,'views',true);if(!update_post_meta($post_ID,'views',($post_views+1))){add_post_meta($post_ID,'views',1,true);}}}}add_action('wp_head','themetuts_record_visitors');functionthemetuts_the_view($before='',$after='',$echo=1){global$post;$post_ID=$post->ID;$views=(int)get_post_meta($post_ID,'views',true);if($echo)echo$before,number_format($views),$after;
elsereturn$views;}
在文章循环中调用出来:
<?phpthemetuts_the_view();?>
然后在需要调用的位置插入下面代码:
<?php$args=array('meta_key'=>'views','orderby'=>'meta_value','order'=>'date');query_posts($args);while(have_posts()):the_post();?><li>
<ahref="<?phpthe_permalink()?>"title="<?phpthe_title();?>">
<?phpif(has_post_thumbnail()){the_post_thumbnail('post');}else{?><imgsrc="<?phpechoget_template_directory_uri();?>/images/thumbnail/<?phpechorand(1,6);?>.png"alt="<?phpthe_title();?>"/><?}?>
<spanclass="itemtit"><?phpthe_title();?></span>
<spanclass="itempointclr">
<spanclass="price">¥<?phpthe_field('price');?></span>
<spanclass="hots"><spanclass="fafa-sun-o"></span><?phpthemetuts_the_view();?></span>
</span>
</a>
</li><?phpendwhile;wp_reset_query();?>
通过上面方法,就可以调用wordpress文章,按照浏览量来排序了。
Demand feedback