创建Metabox以激活滑块

时间:2018-02-07 作者:morteza Yung

我想在添加帖子页面上创建一个复选框来启用滑块当复选框被激活时,帖子显示在滑块中,我只想编写代码,我不想使用任何插件。

1 个回复
SO网友:Tom J Nowell

不必理会复选框和元框,这是一种限制:

您只能有一个滑块,并且必须为每个新滑块添加代码以添加一个新的复选框数据作为自定义字段存储在post meta中,但按其post meta查询帖子的成本极高且速度较慢,因此我提出了一种更容易实现且更灵活的替代方法:

使用非层次滑块分类法,这将为您提供:

  • 如果你想扩展你的滑块,免费存档(当然是可选的)
  • A free UIsuper fast. 这比元框中的复选框快几个数量级,查询会随着流量的增加和帖子数量的增加而扩展。Post meta查询不会以复选框列表的形式扩展免费用户界面(因此从技术上讲,它是一个带有复选框的元框,结果很有趣!)
  • 一个滑块管理UI,在“帖子”下,您将获得一个页面,在该页面中可以查看所有滑块,命名它们,添加描述,查看它们有多少帖子,删除/添加滑块元!现在你有了slider 术语,您可以添加术语元!过渡风格的元术语?过渡速度?现在可以在多个滑块中显示许多可能的帖子,例如,此帖子显示在名为homepage, 滑块可能出现的位置没有奖品:

    enter image description here

    一篇文章甚至可以出现在多个滑块中!

    如何设置分类法

    你会打电话register_taxonomyinit 动作如下:

    add_action( \'init\', \'create_morteza_slider_tax\' );
    
    function create_morteza_slider_tax() {
        register_taxonomy(
            \'morteza_slider\',
            \'post\',
            array(
                \'label\' => __( \'Sliders\' ),
                \'hierarchical\' => false,
                \'public\' => false
            )
        );
    }
    
    如何获取滑块的帖子

在post查询中使用分类名称作为参数:

$query = new WP_Query( [
    \'morteza_slider\' => \'homepage\' // <-- this is all that\'s needed
] );
然后使用标准post循环进行后续操作:

// a standard post loop
if ( $query->have_posts() ) {
    echo \'start slider markup\';

    while ( $query->have_posts() ) {
        $query->the_post();
        // TODO: output this post as a slide
    }
    wp_reset_postdata();
    echo \'end slider markup\';
}
确保交换出各种位,例如,“开始滑块标记”被替换为滑块库工作所需的任何内容

结束