Rufen Sie die Post-ID in der Variablen im Grid Builder Visual Composer ab

Lesezeit: 2 Minuten

Benutzer-Avatar
Giovanni Ricciardi

Ich versuche, einige benutzerdefinierte Felder in meinen benutzerdefinierten Grid-Builder zu bekommen. Ich habe eine zusätzliche Taxonomie hinzugefügt und möchte benutzerdefinierte Daten zur Anzeige hinzufügen. Ich habe deinen Artikel hier gelesen: https://kb.wpbakery.com/docs/developers-how-tos/adding-custom-shortcode-to-grid-builder/ und bei der Implementierung bekomme ich ein Problem, wenn ich versuche, die ID der aktuellen Post-ID abzurufen. Ich weiß, der Code ist wie folgt:

add_shortcode( 'vc_post_id', 'vc_post_id_render' );
function vc_post_id_render() {
   return '<h2>{{ post_data:ID }}</h2>'; // usage of template variable post_data with argument "ID" 
}

Die Sache ist, dass die {{ post_data:ID }} nicht in einer Variablen gespeichert werden kann, um später den Beitrag zu erhalten und damit zu spielen:

$post_id = '{{ post_data:ID }}';
$post = get_post($post_id);

wie es scheitern wird. Können Sie mir bitte sagen, wie ich die aktuelle Beitrags-ID als Variable bekomme, damit ich benutzerdefinierte Daten im Raster anzeigen kann?

Vielen Dank.

  • Ich habe das selbe Problem. Hast du es kapiert!?

    – Tiffany Israel

    1. Juni 2017 um 16:38 Uhr

  • Es scheint, dass es einen String-Wert zurückgibt. Ich versuche das zu lösen. wird aktualisieren, wenn ich etwas gefunden habe

    – Amilaishere

    7. Juni 2017 um 10:59 Uhr

  • Hast du jemals herausgefunden, wie das geht? Ich habe gerade das gleiche Problem und kann nirgendwo klare Informationen finden.

    – Alfie Robles

    9. Juni 2018 um 22:55 Uhr

Ok, hier was ich denke. In meinem Szenario habe ich ein benutzerdefiniertes Feld namens Preis. So konnte ich den Preis mit anzeigen

{{ post_data:price }}

Dies. Aber als ich versuchte, es einer Variablen zuzuweisen, schlug es fehl. Wenn ich die Variable var_dump gebe es mir (21) Zeichen für jedes Mal. Also dachte ich, dass es unsichtbare Charaktere geben muss. also ich

echo bin2hex($price)

Das Ergebnis war 7b7b20706f73745f646174613a7072696365207d7d

Und nach der Konvertierung von ASCII in Text wurde es so

{{ post_data:price }}

Dann habe ich es begriffen. Oh dumm von mir. Dies sind Template-Tags. Wie in smarty oder eckig. Sie haben Werte eingefügt, sobald die Seite geladen wurde. PHP hat also keine Chance, einen Mehrwert zu erzielen, da alles auf der Client-Seite geschieht.

  • Du hast das Problem wirklich gut erklärt! gab aber keine alternative Lösung.

    – Rakesch

    26. August 2019 um 11:54 Uhr

Sie müssen vc_gitem_template_attribute_YOUR_ATTRIBUTE erstellen und dort können Sie die ID nehmen. so was:

add_filter( 'vc_gitem_template_attribute_producer_logo', 'vc_gitem_template_attribute_producer_logo', 10, 2 );
function vc_gitem_template_attribute_producer_logo( $value, $data ) {

  extract( array_merge( array(
   'post' => null,
   'data' => '',
  ), $data ) );

  $termini = get_the_terms( $post->ID, 'producer' );
  $logo = get_field('prlogo', $termini[0]);
  $image="<img class="img-prod" src="" . $logo . '">';

  return $image;
} 

und rendern

add_shortcode( 'producer_logo', 'vc_producer_logo_render' );
function vc_producer_logo_render($atts, $content, $tag) {
    return '{{producer_logo}}';
}

1372350cookie-checkRufen Sie die Post-ID in der Variablen im Grid Builder Visual Composer ab

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

Privacy policy