WordPress Abrufen von Postdaten für Post Grid von Visual Composer

Lesezeit: 6 Minuten

Ich verwende Visual Composer in WordPress und möchte ein benutzerdefiniertes Post Grid erstellen. Aber die Standardelemente, die das Postgrid liefert, reichen nicht aus. Ich möchte den Autor des Beitrags, die Anzahl der Kommentare, die Kategorie, die er hat, und die Tags, die er hat, anzeigen. Ich bin mit Visual Composer nicht wirklich vertraut, aber ich brauche einen Hinweis in die richtige Richtung, damit ich diese Daten bekomme? Was kann ich tun? Ich habe ihre Dokumente durchsucht, aber ohne Erfolg. Wenn ich den PHP-Code verschieben muss, würde ich gerne wissen, was ich bewege, ist das Richtige. Irgendwelche Ideen? Wenn Sie weitere Informationen benötigen, fragen Sie bitte 😀

Vielen Dank im Voraus für die Hilfe.

WordPress Abrufen von Postdaten fur Post Grid von Visual Composer
Damian McCann

Wenn jemand immer noch herausfinden möchte, wie er die ID in einem Post-Grid erhält oder ein bestimmtes Widget für das Grid erstellt, können Sie das folgende von mir erstellte Snippet verwenden, um ein Symbol vor dem Post-Titel hinzuzufügen. Sie sehen die erste Funktion, die Sie aufrufen können $post-ID zur Verwendung bei jeder Abfrage.

//** Case Study Title Block Shortcodes ***********
//********************************
add_filter( 'vc_gitem_template_attribute_case_study_title','vc_gitem_template_attribute_case_study_title', 10, 2 );
function vc_gitem_template_attribute_case_study_title( $value, $data ) {
   extract( array_merge( array(
      'post' => null,
      'data' => '',
   ), $data ) );
  $atts_extended = array();
  parse_str( $data, $atts_extended );
  $atts = $atts_extended['atts'];
  // write all your widget code in here using queries etc
  $title = get_the_title($post->ID);
  $link = get_permalink($post->ID);
  $terms = get_the_terms($post->ID, 'case_categories');
  $output = "<h4 class=\"case-title\"><a href=\"". $link ."\">".  get_the_icon($terms[0]->term_id) . $title ."</a></h4>";
  return $output;
}

add_filter( 'vc_grid_item_shortcodes', 'case_study_title_shortcodes' );
function case_study_title_shortcodes( $shortcodes ) {
   $shortcodes['vc_case_study_title'] = array(
     'name' => __( 'Case Study Title', 'sage' ),
     'base' => 'vc_case_study_title',
     'icon' => get_template_directory_uri() . '/assets/images/icon.svg',
     'category' => __( 'Content', 'sage' ),
     'description' => __( 'Displays the case study title with correct icon', 'sage' ),
     'post_type' => Vc_Grid_Item_Editor::postType()
  );
  return $shortcodes;
 }

add_shortcode( 'vc_case_study_title', 'vc_case_study_title_render' );
function vc_case_study_title_render($atts){
   $atts = vc_map_get_attributes( 'vc_case_study_title', $atts );
   return '{{ case_study_title }}';
}

  • Willkommen bei StackOverflow. Wenn Sie Code in einer Antwort posten, erklären Sie bitte etwas mehr darüber, was er tut. Ein Beispiel finden Sie in der zuvor geposteten Antwort.

    – Jakatz

    27. Februar 2018 um 13:53 Uhr

  • Hat bei mir super funktioniert…!! Danke

    – Jawwad Rizwan

    17. April 2018 um 13:46 Uhr

  • Endlich! Dies ist der richtige Weg, um einen benutzerdefinierten Shortcode für das Post Grid hinzuzufügen. Die Verwendung der Template-Variablen {{ post_data:ID }} direkt im Shortcode reicht nicht aus, es gibt Fehler. Wir müssen eine benutzerdefinierte Variable erstellen und dann die $post->ID abrufen und den Code in einem benutzerdefinierten „vc_gitem_template_attribute_“-Filter manipulieren.

    – Zod

    14. April 2020 um 13:32 Uhr

1647322146 900 WordPress Abrufen von Postdaten fur Post Grid von Visual Composer
Aleksej Spirin

Ich habe das gleiche Problem; hier ist, wie ich es löse:

Laut Visual Composer-Dokumentation: https://kb.wpbakery.com/docs/developers-how-tos/adding-custom-shortcode-to-grid-builder/

Wenn Sie den folgenden Code hinzufügen functions.php, wird Ihrem benutzerdefinierten Grid-Builder eine neue Komponente hinzugefügt (in meinem Beispiel lautet der Name „Autor“). Es gibt eine Reihe von Werten, die Sie mit der Post-Data-Template-Variablenfunktion erhalten können, und einer davon ist nicht der Name des Autors, sondern seine ID (das ist traurig, aber Sie können diesen Wert zumindest verwenden, um den Autorennamen zu erhalten). Der Wert ist 'post_author' => ID des Autors (zum Beispiel ‘1’)

Hier ist die Funktion, mit der ich den Beitragsautor erhalte und ihn anzeige (wenn die Autorenkomponente zu Ihrem benutzerdefinierten Raster in “Custom Grid Builder” hinzugefügt wurde). Setzen Sie es ein functions.php deines Child-Themes:

add_filter( 'vc_grid_item_shortcodes', 'my_module_add_grid_shortcodes' );
function my_module_add_grid_shortcodes( $shortcodes ) {
    $shortcodes['vc_post_id'] = array(
        'name' => __( 'Author', 'my-text-domain' ),
        'base' => 'vc_post_id',
        'category' => __( 'Content', 'my-text-domain' ),
        'description' => __( 'Show current post author', 'my-text-domain' ),
        'post_type' => Vc_Grid_Item_Editor::postType(),
    );


    return $shortcodes;
}

// output function
add_shortcode( 'vc_post_id', 'vc_post_id_render' );
function vc_post_id_render() {
    $nn = '{{ post_data:post_author }}'; // usage of template variable post_data with argument "post_author"

    return get_the_author($nn);

}

Es gibt ein kleines Problem. Es funktioniert aber get_the_author ist eine veraltete Funktion in WordPress. Ich würde mich über Vorschläge freuen, um es moderner zu gestalten, oder wenn Sie andere Alternativen nennen, schlagen Sie dies bitte vor.

Hier ist auch die Liste der verfügbaren Variablen von vc_post_id_render aus Dokumenten. Hier sind sie:

WP_Post::__set_state(array(
   'ID' => 69,
   'post_author' => '1',
   'post_date' => '2015-04-29 14:15:56',
   'post_date_gmt' => '2015-04-29 14:15:56',
   'post_content' => 'Your post content',
   'post_title' => 'Your post title',
   'post_excerpt' => '',
   'post_status' => 'publish',
   'comment_status' => 'open',
   'ping_status' => 'open',
   'post_password' => '',
   'post_name' => 'post name',
   'to_ping' => '',
   'pinged' => '',
   'post_modified' => '2015-06-17 11:18:41',
   'post_modified_gmt' => '2015-06-17 11:18:41',
   'post_content_filtered' => '',
   'post_parent' => 0,
   'guid' => 'http://wp.master/?p=69',
   'menu_order' => 0,
   'post_type' => 'post',
   'post_mime_type' => '',
   'comment_count' => '0',
   'filter' => 'raw',
   'filter_terms' =>
  array (
  ),
))

  • Hier erfahren Sie, wie Sie den Autor erhalten, wenn Sie die Basis verstehen, und Sie können auch die Anzahl der Kommentare und andere Daten abrufen, die Sie benötigen. Um die Kommentaranzahl zu erhalten, ändern Sie einfach post_data:comment_count in der Ausgabefunktion

    – Alexej Spirin

    23. Februar 2016 um 10:09 Uhr


1647322147 862 WordPress Abrufen von Postdaten fur Post Grid von Visual Composer
Hipopeur

das ist deine Antwort

https://kb.wpbakery.com/docs/developers-how-tos/adding-custom-shortcode-to-grid-builder/

bei Verwendung von Template-Variablen

Beispiel: In der Visual Composer-Vorlage können Sie {{ post_date:ID }} verwenden, um die Post-ID anzuzeigen. Ich weiß nicht, wie Tag anzeigen.

  • Ja, ich verwende den Beitragsautor, aber es wird nur die ID angezeigt. Da bekomme ich den Namen nicht raus.

    – Jürgen Feuchter

    8. Juli 2015 um 21:42 Uhr

  • Ich denke, Sie können @Hipopeur answer verwenden, um die ID zu erhalten, und dann: get_userdata( $userid ), um ein WP-Objekt mit allen Daten des Benutzers zu erhalten.

    – Edd

    4. Dezember 2015 um 19:36 Uhr

  • @JürgenFeuchter Hallo. Ich habe ein ähnliches Problem, ich muss die Benutzer-ID abrufen, aber nicht mit {{ post_date:ID }} , sondern als Variable. Ich muss es für einen anderen Shortcode verwenden, und dieser Wert wird nach dem Rendern erstellt. Irgendeine Idee, wie man an die ID kommt??

    – Felipechang

    26. Januar 2016 um 15:02 Uhr


  • Ich brauche das auch als Variable! Ich weiß nicht, wie ich es machen soll. Jeder?

    – Pablo SG Pacheco

    29. August 2016 um 21:28 Uhr

  • Immer noch keine Lösung? {{ ID:ID }} funktioniert … aber ja, keine Ahnung, wie man es als Variable aufruft, um zusätzlichen Inhalt für eingebaute Shortcodes hinzuzufügen.

    – Xairoo

    5. Januar 2017 um 19:42 Uhr

1004050cookie-checkWordPress Abrufen von Postdaten für Post Grid von Visual Composer

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

Privacy policy