Skip to content

Instantly share code, notes, and snippets.

@QWp6t
Last active July 24, 2024 18:14
Show Gist options
  • Save QWp6t/ba2ba80c1755b840226f to your computer and use it in GitHub Desktop.
Save QWp6t/ba2ba80c1755b840226f to your computer and use it in GitHub Desktop.

Revisions

  1. QWp6t created this gist Sep 14, 2015.
    35 changes: 35 additions & 0 deletions acf-post-type-supports.php
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,35 @@
    <?php
    /**
    * Plugin Name: Field Group Location: Post Type Supports
    * Plugin URI: http://qwp6t.me/acf-post-type-supports
    * Description: Adds ACF Field Group location rule for Post Type Support. NOTE: You must first declare the supported feature in your theme.
    * Version: 1.0.0
    * Author: QWp6t
    * Author URI: http://qwp6t.me
    * License: MIT License
    */

    add_filter('acf/location/rule_types', function ($choices) {
    $choices[__('Post', 'acf')]['post_type_supports'] = __('Post Type Supports', 'qwp6t');
    return $choices;
    });

    add_filter('acf/location/rule_values/post_type_supports', function ($choices = []) {
    foreach ($GLOBALS['_wp_post_type_features'] as $post_type) {
    foreach ($post_type as $feature => $args) {
    $choices[$feature] = $feature;
    }
    }
    $choices = array_unique($choices);
    asort($choices);
    return $choices;
    }, 10, 1);

    add_filter('acf/location/rule_match/post_type_supports', function ($match, array $rule, array $options) {
    if (!$options['post_id'] || $match) {
    return false;
    }
    $post_type = $options['post_type'] ?: get_post_type($options['post_id']);
    $match = post_type_supports($post_type, $rule['value']);
    return ($rule['operator'] == "!=") ? !$match : $match;
    }, 10, 3);