php 使用show_on_cb根据分配了分类术语的帖子/页面显示/隐藏CMB字段

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php 使用show_on_cb根据分配了分类术语的帖子/页面显示/隐藏CMB字段相关的知识,希望对你有一定的参考价值。

<?php
/**
 * Author: Gemma Plank
 * Author URL: https://makedo.net
 * Version: 1.0
 */

/**
 * Function to only show CMB fields if the specified taxonomy term is assigned to the post/page
 *
 * @return [bool]      [if it returns true, it will allow the cmb fields to be shown]
 */
public function show_video_on_terms( $cmb ) {

	// Store post/page id
	$post_id = $cmb->object_id();

	// Using the current post id, find all taxonomy terms assigned.
	$terms = get_the_terms( (int) $post_id, 'category' );

	// Create array of taxonomy term slugs we want to check against.
	$slugs = array( 'term-1', 'term-2', 'term-3' );

	// For every term, store the slug inside our slug array.
	foreach ( $terms as $term ) {
		// if any of the term slugs match the ones in our slug array then return true.
		if ( in_array( $term->slug, $slugs, true ) ) {
			return true;
		}
	}

	return false;

}

/**
 * Register Meta Boxes.
 */
public function register_meta_boxes() {

	$field_box = new_cmb2_box(
		array(
			'id'           => 'content_settings',
			'title'        => __( 'Title', 'textdomain' ),
			'object_types' => array(
				'post',
				'page',
			),
			'priority'     => 'high',
			'context'      => 'normal',
			'show_names'   => true,
			'show_on_cb'   => array( $this, 'show_video_on_terms' ),
		)
	);

	$field_box->add_field(
		array(
			'name'        => __( 'Field Title', 'textdomain' ),
			'description' => __( 'Description', 'textdomain' ),
			'id'          => 'field_id',
			'type'        => 'wysiwyg',
		)
	);

}

以上是关于php 使用show_on_cb根据分配了分类术语的帖子/页面显示/隐藏CMB字段的主要内容,如果未能解决你的问题,请参考以下文章

PHP 根据Vocab ID渲染分类术语

WordPress 根据分类术语显示相关帖子

如何在drupal 7中根据分类术语搜索用户列表?

WP - 基于匹配分类术语的 get_template_part

使用 ACF 从分类术语中获取图像

根据drupal中的其他分类术语加载分类内容