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.
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 }}';
}
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 (
),
))
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.