wordpress建站教程:给WordPress页面添加分类和标签属性(WordPress获取某个分类关联的标签)
文章目录
wordpress建站教程:给Wordpress页面添加分类和标签属性
作者:悦然wordpress建站(悦然建站)
(此处已添加小程序,请到今日头条客户端查看)
使用wordpress建站之后,日常的网站内容更新可以通过文章和页面两种形式,基本的内容编辑都是一样的,不过wordpress的页面不能添加标签和分类。
最近有用户咨询悦然建站,他想把一些页面添加到文章分类里面,借这个机会悦然企业网站建设给大家分享两个方法,教大家给wordpress站点的页面添加标签和分类属性。
使用插件
使用插件是最简单的方法,大家可以去搜索下载一个插件-Post Tags and Categories for Pages,然后安装就可以了,并不需要特别的设置。
添加代码
如果你的wordpress网站已经使用了比较多的插件,或者是这个插件与你当前的wordpress版本是主题不兼容,那么可以尝试直接使用代码来添加标签和分类属性。
给大家分享的代码如下:内容是从插件中提取出来的
//为WordPress页面添加标签和分类
(悦然wordpress建站收集分享)
class PTCFP{
function __construct(){
add_action( 'init', array( $this, 'taxonomies_for_pages' ) );
/**
* 确保这些查询修改不会作用于管理后台,防止文章和页面混杂
*/
if ( ! is_admin() ) {
add_action( 'pre_get_posts', array( $this, 'category_archives' ) );
add_action( 'pre_get_posts', array( $this, 'tags_archives' ) );
} // ! is_admin
} // __construct
/**
* 为“页面”添加“标签”和“分类”
*
* @uses register_taxonomy_for_object_type
*/
function taxonomies_for_pages() {
register_taxonomy_for_object_type( 'post_tag', 'page' );
register_taxonomy_for_object_type( 'category', 'page' );
} // taxonomies_for_pages
/**
* 在标签存档中包含“页面”
*/
function tags_archives( $wp_query ) {
if ( $wp_query->get( 'tag' ) )
$wp_query->set( 'post_type', 'any' );
} // tags_archives
/**
* 在分类存档中包含“页面”
*/
function category_archives( $wp_query ) {
if ( $wp_query->get( 'category_name' ) || $wp_query->get( 'cat' ) )
$wp_query->set( 'post_type', 'any' );
} // category_archives
} // PTCFP
$ptcfp = new PTCFP();
操作方法:复制上面的代码,把它添加到当前wordpress主题模板的functions.php文件中,然后保存,刷新后台即可。
使用效果
当使用插件或代码成功给页面添加标签和分类属性后,在wordpress后面的页面下就会多出分类和标签菜单,内容与文章是一样的,右边的页面快速编辑中也可以直接给页面指定分类,添加标签。
https://www.zsxxfx.com/fuwu
比如以悦然企业网站建设自己的网站来例,我们把其中一个页面添加到了服务项目分类中,如上图所示。
总结
给wordpress页面添加分类或标签是一个非常小众的要求,总的来说没有太大的意义,一般情况下并不建议大家这样去做。企业网站建设完成后最重要的还是做好基本的网站内容更新,不要总去纠结一些不太重要的功能或细节。
不过wordpress页面的存在有其它更重要的意义,比如进行一些更复杂设计或开发,而且页面可以用来设计单独的首页或专题页。
WordPress获取某个分类关联的标签
我在WordPress后台某篇文章的编辑页面,给这篇文章选择了分类:WordPress,接着同时选择了标签:php、主题制作,这时分类(WordPress)就与标签(php、主题制作)建立了关联,利用这种关联我们实现很多种需求,最典型的是细化WordPress文章分类功能,在子分类无法达到我们的需求时,可以使用标签来细化。我只需要提供WordPress分类的id,就可以得到它关联的标签:php、主题制作。
调用函数
我们可以先在主题目录的下的functions.php添加以下函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
<span class="kw2">function</span> mobantu_get_category_tags<span class="br0">(</span><span class="re0">$args</span><span class="br0">)</span> <span class="br0">{</span> <span class="kw2">global</span> <span class="re0">$wpdb</span><span class="sy0">;</span> <span class="re0">$tags</span> <span class="sy0">=</span> <span class="re0">$wpdb</span><span class="sy0">-></span><span class="me1">get_results</span> <span class="br0">(</span><span class="st0">\" SELECT DISTINCT terms2.term_id as tag_id, terms2.name as tag_name FROM <span class="es4">$wpdb->posts</span> as p1 LEFT JOIN <span class="es4">$wpdb->term_relationships</span> as r1 ON p1.ID = r1.object_ID LEFT JOIN <span class="es4">$wpdb->term_taxonomy</span> as t1 ON r1.term_taxonomy_id = t1.term_taxonomy_id LEFT JOIN <span class="es4">$wpdb->terms</span> as terms1 ON t1.term_id = terms1.term_id, <span class="es4">$wpdb->posts</span> as p2 LEFT JOIN <span class="es4">$wpdb->term_relationships</span> as r2 ON p2.ID = r2.object_ID LEFT JOIN <span class="es4">$wpdb->term_taxonomy</span> as t2 ON r2.term_taxonomy_id = t2.term_taxonomy_id LEFT JOIN <span class="es4">$wpdb->terms</span> as terms2 ON t2.term_id = terms2.term_id WHERE t1.taxonomy = \'category\' AND p1.post_status = \'publish\' AND terms1.term_id IN (\"</span><span class="sy0">.</span><span class="re0">$args</span><span class="br0">[</span><span class="st_h">\'categories\'</span><span class="br0">]</span><span class="sy0">.</span><span class="st0">\") AND t2.taxonomy = \'post_tag\' AND p2.post_status = \'publish\' AND p1.ID = p2.ID ORDER by tag_name \"</span><span class="br0">)</span><span class="sy0">;</span> <span class="re0">$count</span> <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> <span class="kw1">if</span><span class="br0">(</span><span class="re0">$tags</span><span class="br0">)</span> <span class="br0">{</span> <span class="kw1">foreach</span> <span class="br0">(</span><span class="re0">$tags</span> <span class="kw1">as</span> <span class="re0">$tag</span><span class="br0">)</span> <span class="br0">{</span> <span class="re0">$mytag</span><span class="br0">[</span><span class="re0">$count</span><span class="br0">]</span> <span class="sy0">=</span> get_term_by<span class="br0">(</span><span class="st_h">\'id\'</span><span class="sy0">,</span> <span class="re0">$tag</span><span class="sy0">-></span><span class="me1">tag_id</span><span class="sy0">,</span> <span class="st_h">\'post_tag\'</span><span class="br0">)</span><span class="sy0">;</span> <span class="re0">$count</span><span class="sy0">++;</span> <span class="br0">}</span> <span class="br0">}</span> <span class="kw1">else</span> <span class="br0">{</span> <span class="re0">$mytag</span> <span class="sy0">=</span> <span class="kw4">NULL</span><span class="sy0">;</span> <span class="br0">}</span> <span class="kw1">return</span> <span class="re0">$mytag</span><span class="sy0">;</span> <span class="br0">} </span> |
函数用法
然后在其他主题文件中,我们可以调用某个分类或某几个分类关联的标签:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<span class="co1">// 12,13是分类ID,多个用半角逗号隔开</span> <span class="re0">$args</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">(</span> <span class="st_h">\'categories\'</span> <span class="sy0">=></span> <span class="st_h">\'12,13\'</span><span class="br0">)</span><span class="sy0">;</span> <span class="co1">// 调用上面定义的函数,来获取ID为12,13的分类的关联标签</span> <span class="re0">$tags</span> <span class="sy0">=</span> mobantu_get_category_tags<span class="br0">(</span><span class="re0">$args</span><span class="br0">)</span><span class="sy0">;</span> <span class="co1">// 输出我们获取到的关联标签,以列表形式打印</span> <span class="re0">$content</span> <span class="sy0">.=</span> <span class="st0">\"<ul>\"</span><span class="sy0">;</span> <span class="kw1">if</span><span class="br0">(</span><span class="sy0">!</span><span class="kw3">empty</span><span class="br0">(</span><span class="re0">$tags</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span> <span class="kw1">foreach</span> <span class="br0">(</span><span class="re0">$tags</span> <span class="kw1">as</span> <span class="re0">$tag</span><span class="br0">)</span> <span class="br0">{</span> <span class="re0">$content</span> <span class="sy0">.=</span> <span class="st0">\"<li><a href=<span class="es1">\\\"</span>\"</span><span class="sy0">.</span>get_tag_link<span class="br0">(</span><span class="re0">$tag</span><span class="sy0">-></span><span class="me1">term_id</span><span class="br0">)</span><span class="sy0">.</span><span class="st0">\"<span class="es1">\\\"</span>>\"</span><span class="sy0">.</span><span class="re0">$tag</span><span class="sy0">-></span><span class="me1">name</span><span class="sy0">.</span><span class="st0">\"</a></li>\"</span><span class="sy0">;</span> <span class="br0">}</span> <span class="br0">}</span> <span class="re0">$content</span> <span class="sy0">.=</span> <span class="st0">\"</ul>\"</span><span class="sy0">;</span> <span class="kw1">echo</span> <span class="re0">$content</span><span class="sy0">; </span> |
好了,基本用法就这些,具体其他用法你可以自由地进行扩展。
获取某个标签关联的分类
反过来,我们可能会有这样的需求,既然可以获取某个分类的关联标签,那我能获取某个标签的关联分类吗?答案是可以的,将上面的代码稍微改一下就可以了:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
<span class="kw2">function</span> mobantu_get_tag_categories<span class="br0">(</span><span class="re0">$args</span><span class="br0">)</span> <span class="br0">{</span> <span class="kw2">global</span> <span class="re0">$wpdb</span><span class="sy0">;</span> <span class="re0">$categories</span> <span class="sy0">=</span> <span class="re0">$wpdb</span><span class="sy0">-></span><span class="me1">get_results</span> <span class="br0">(</span><span class="st0">\" SELECT DISTINCT terms1.term_id as cat_id FROM <span class="es4">$wpdb->posts</span> as p1 LEFT JOIN <span class="es4">$wpdb->term_relationships</span> as r1 ON p1.ID = r1.object_ID LEFT JOIN <span class="es4">$wpdb->term_taxonomy</span> as t1 ON r1.term_taxonomy_id = t1.term_taxonomy_id LEFT JOIN <span class="es4">$wpdb->terms</span> as terms1 ON t1.term_id = terms1.term_id, <span class="es4">$wpdb->posts</span> as p2 LEFT JOIN <span class="es4">$wpdb->term_relationships</span> as r2 ON p2.ID = r2.object_ID LEFT JOIN <span class="es4">$wpdb->term_taxonomy</span> as t2 ON r2.term_taxonomy_id = t2.term_taxonomy_id LEFT JOIN <span class="es4">$wpdb->terms</span> as terms2 ON t2.term_id = terms2.term_id WHERE t1.taxonomy = \'category\' AND p1.post_status = \'publish\' AND terms2.term_id IN (\"</span><span class="sy0">.</span><span class="re0">$args</span><span class="br0">[</span><span class="st_h">\'tags\'</span><span class="br0">]</span><span class="sy0">.</span><span class="st0">\") AND t2.taxonomy = \'post_tag\' AND p2.post_status = \'publish\' AND p1.ID = p2.ID ORDER by cat_id \"</span><span class="br0">)</span><span class="sy0">;</span> <span class="re0">$count</span> <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> <span class="kw1">if</span><span class="br0">(</span><span class="re0">$categories</span><span class="br0">)</span> <span class="br0">{</span> <span class="kw1">foreach</span> <span class="br0">(</span><span class="re0">$categories</span> <span class="kw1">as</span> <span class="re0">$category</span><span class="br0">)</span> <span class="br0">{</span> <span class="re0">$mycategory</span><span class="br0">[</span><span class="re0">$count</span><span class="br0">]</span> <span class="sy0">=</span> get_term_by<span class="br0">(</span><span class="st_h">\'id\'</span><span class="sy0">,</span> <span class="re0">$category</span><span class="sy0">-></span><span class="me1">cat_id</span><span class="sy0">,</span> <span class="st_h">\'category\'</span><span class="br0">)</span><span class="sy0">;</span> <span class="re0">$count</span><span class="sy0">++;</span> <span class="br0">}</span> <span class="br0">}</span> <span class="kw1">else</span> <span class="br0">{</span> <span class="re0">$mycategory</span> <span class="sy0">=</span> <span class="kw4">NULL</span><span class="sy0">;</span> <span class="br0">}</span> <span class="kw1">return</span> <span class="re0">$mycategory</span><span class="sy0">;</span> <span class="br0">}</span> |
调用范例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<span class="co1">// 12,13是标签ID,多个用半角逗号隔开</span> <span class="re0">$args</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">(</span> <span class="st_h">\'tags\'</span> <span class="sy0">=></span> <span class="st_h">\'12,13\'</span><span class="br0">)</span><span class="sy0">;</span> <span class="co1">// 调用上面定义的函数,来获取ID为12,13的标签的关联分类</span> <span class="re0">$categories</span> <span class="sy0">=</span> mobantu_get_tag_categories<span class="br0">(</span><span class="re0">$args</span><span class="br0">)</span><span class="sy0">;</span> <span class="co1">// 输出我们获取到的关联分类,以列表形式打印</span> <span class="re0">$content</span> <span class="sy0">.=</span> <span class="st0">\"<ul>\"</span><span class="sy0">;</span> <span class="kw1">if</span><span class="br0">(</span><span class="sy0">!</span><span class="kw3">empty</span><span class="br0">(</span><span class="re0">$categories</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span> <span class="kw1">foreach</span> <span class="br0">(</span><span class="re0">$categories</span> <span class="kw1">as</span> <span class="re0">$category</span><span class="br0">)</span> <span class="br0">{</span> <span class="re0">$content</span> <span class="sy0">.=</span> <span class="st0">\"<li><a href=<span class="es1">\\\"</span>\"</span><span class="sy0">.</span>get_category_link<span class="br0">(</span> <span class="re0">$category</span><span class="sy0">-></span><span class="me1">term_id</span> <span class="br0">)</span><span class="sy0">.</span><span class="st0">\"<span class="es1">\\\"</span>>\"</span><span class="sy0">.</span><span class="re0">$category</span><span class="sy0">-></span><span class="me1">name</span><span class="sy0">.</span><span class="st0">\"</a></li>\"</span><span class="sy0">;</span> <span class="br0">}</span> <span class="br0">}</span> <span class="re0">$content</span> <span class="sy0">.=</span> <span class="st0">\"</ul>\"</span><span class="sy0">;</span> <span class="kw1">echo</span> <span class="re0">$content</span><span class="sy0">;</span> |
1. 带 [亲测] 说明源码已经被站长亲测过!
2. 下载后的源码请在24小时内删除,仅供学习用途!
3. 分享目的仅供大家学习和交流,请不要用于商业用途!
4. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
5. 本站所有资源来源于站长上传和网络,如有侵权请邮件联系站长!
6. 没带 [亲测] 代表站长时间紧促,站长会保持每天更新 [亲测] 源码 !
7. 盗版ripro用户购买ripro美化无担保,若设置不成功/不生效我们不支持退款!
8. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
9. 如果你也有好源码或者教程,可以到审核区发布,分享有金币奖励和额外收入!
10.如果您购买了某个产品,而我们还没来得及更新,请联系站长或留言催更,谢谢理解 !
GG资源网 » wordpress建站教程:给WordPress页面添加分类和标签属性(WordPress获取某个分类关联的标签)