Benutzerdefinierte Felder werden in benutzerdefinierten Beitragstypen nicht angezeigt

Lesezeit: 3 Minuten

Benutzer-Avatar
Vinit Sinkar

Ich habe einen benutzerdefinierten Beitragstyp namens „Designer“. Jeder Beitrag verwendet unterschiedliche einzigartige erweiterte benutzerdefinierte Felder, da jeder Beitrag eindeutige Vorlagen hat. Mit dem folgenden Code kann ich Regeln für jeden Beitrag im Designer-Beitragstyp festlegen und nur die benutzerdefinierten Felder speichern werden auf Post-Edit-Seiten im Backend nicht angezeigt. Normalerweise sollte dieser Code funktionieren, aber keine Ahnung, was mit dem Code passiert ist

Bitte helfen Sie.

add_filter('acf/location/rule_types', 'acf_location_rules_types');
function acf_location_rules_types( $choices )
{
    $choices['Custom Post types']['cpt_parent'] = 'Custom post type parent';

    return $choices;
}
add_filter('acf/location/rule_values/cpt_parent',    'acf_location_rules_values_cpt_parent');
function acf_location_rules_values_cpt_parent( $choices )
{
    $args = array(
        'hierarchical' => true,
        '_builtin' => false
    );
    $posttypes = get_post_types( $args );

    if( $posttypes )
    {
        foreach( $posttypes as $posttype ):

            if( $posttype != 'acf' ):
                $args = array(
                'post_type' => 'designer',
                'posts_per_page' => -1,
                'post_status' => 'publish'
                );
                $customposts = get_posts( $args );  
                if ( $customposts  ) {
                    foreach( $customposts as $custompost ){
                        $choices[ $custompost->ID] = $custompost->post_title;
                    }
                }
            endif;
        endforeach;
    }

    return $choices;
}

//MATCH THE RULE
add_filter('acf/location/rule_match/cpt_parent',              'acf_location_rules_match_cpt_parent', 10, 3);
function acf_location_rules_match_cpt_parent( $match, $rule, $options )
{
    global $post;
    $selected_post = (int) $rule['value'];

    // post parent
    $post_parent = $post->post_parent;
    if( $options['page_parent'] ) {

        $post_parent = $options['page_parent'];

    }

    if ($rule['operator'] == "=="){
        $match = ( $post_parent == $selected_post );
    }
    elseif ($rule['operator'] != "!="){
        $match = ( $post_parent != $selected_post );
    }

    return $match;
}

Geben Sie hier die Bildbeschreibung ein

  • Können Sie den „besonderen benutzerdefinierten Beitragstyp“ genauer beschreiben?

    – morgen

    28. März 2017 um 13:11 Uhr

  • @dmorrow ich habe die Beschreibung aktualisiert ist es klar für dich.?

    – Vinit Sinkar

    1. April 2017 um 6:54 Uhr


Benutzer-Avatar
Paul

Ihre Feldgruppe „Künstlersammlung“ ist so eingestellt, dass sie nur in einem Beitrag erscheint, dem Beitrag „Designer-Beitrag 1“, bei dem es sich um einen Designer-Beitragstyp handelt.

Ich verstehe nicht, wofür der ganze Code ist? Erstellen Sie einfach eine andere Feldgruppe für jeden Beitrag, der eine andere Feldgruppe und jeweils eine eigene Regel benötigt.

Ok, tut mir leid, ich verstehe das Problem jetzt und ich habe das Problem auf meiner lokalen Installation neu erstellt.

In der folgenden Codezeile suchen Sie nach post_parent, aber ich denke, Sie sollten nach der ID suchen.

Ich habe das geändert:

$post_parent = $post->post_parent;

dazu:

$post_parent = $post->ID;

und es funktioniert für mich.

  • Ja, es ist so eingestellt, dass es nur auf einem Post erscheint, nämlich Designer Post 1. Aber die Felder werden nicht im Editor von Designer Post 1 angezeigt. Alle Bildschirmoptionen sind angekreuzt

    – Melwin

    4. April 2017 um 13:43 Uhr

  • Ich vermute, der von Ihnen gepostete Code soll “Designer Post” als Option in der ersten Regel-Dropdown-Liste anzeigen, aber wenn Sie diesen Code entfernen, sollten Sie in der Lage sein, Designer Post 1 unter Post is equal to Designer Post 1 zu finden

    – Paulus

    4. April 2017 um 14:23 Uhr

  • Ich habe 1000 Posts, bei denen es schwierig ist, den Designer-Post unter Posts zu bekommen. Also habe ich den obigen Code hinzugefügt, um basierend auf dem benutzerdefinierten Post-Typ zu filtern

    – Melwin

    5. April 2017 um 6:29 Uhr

Wenn ich Ihr Problem richtig verstehe, klicken Sie auf der Post-Bearbeitungsseite von wp-admin auf die Bildschirmoptionen in der oberen rechten Ecke. Stellen Sie im angezeigten Menü sicher, dass die benutzerdefinierten Felder ausgewählt sind. Dadurch werden die benutzerdefinierten Felder zur Bearbeitung angezeigt.

1355160cookie-checkBenutzerdefinierte Felder werden in benutzerdefinierten Beitragstypen nicht angezeigt

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy