Join the Voxel Guide Community!

Get Involved

Post Submitted: Add timeline post to wall

Description/Instructions

With the new 1.5 features, many users are likely building community spaces. In this example, a community/social website has a marketplace available. When a user submits a new item in the marketplace, we want to automatically add a timeline post to the marketplace’s wall so that all users who are following the marketplace will see the timeline post in their newsfeed.

Instructions

This code uses the app event located in Voxel -> App Events -> Your Post Type -> User Submitted a New Post

You can download and install the Code Snippets plugin and paste this code into a new snippet.

Make sure to replace the beginning of this code with your own version.

**** add_action( 'voxel/app-events/post-types/YOUR_POST_TYPE/post:submitted', function( $event )

 

Make sure to replace this ID with the post ID of the post wall you want to create a timeline post for.

**** 'post_id' => 196,

// Handler for post submission event to create timeline entry
add_action( 'voxel/app-events/post-types/equioment/post:submitted', function( $event ) {
global $wpdb;

// Get required data
$post_id = $event->post->get_id();
$user_id = $event->post->get_author()->get_id();
$permalink = get_permalink($post_id);

// Get featured image URL
$thumbnail_id = get_post_thumbnail_id($post_id);
$image_url = wp_get_attachment_url($thumbnail_id);

// Prepare the details array
$details = array(
'link_preview' => array(
'url' => $permalink,
'title' => $event->post->get_title() . ' - ' . parse_url(get_site_url(), PHP_URL_HOST),
'image' => $image_url
)
);

// Prepare data for insert
$data = array(
'user_id' => $user_id,
'post_id' => 196,
'feed' => 'post_wall',
'content' => $permalink,
'details' => wp_json_encode($details),
'moderation' => 1,
'created_at' => current_time('mysql'),
'like_count' => 0,
'reply_count' => 0,
'_index' => str_replace(array(':', '/', '.', '-'), array('U_3A', 'U_2F', 'U_2E', 'U_2D'), $permalink)
);

// Insert the record
$table_name = $wpdb->prefix . 'voxel_timeline';
$result = $wpdb->insert($table_name, $data);

// Log the result if debugging is enabled
if (defined('WP_DEBUG') && WP_DEBUG === true) {
if ($result === false) {
error_log('Timeline insert failed for post ID: ' . $post_id . ' - ' . $wpdb->last_error);
} else {
error_log('Timeline insert successful for post ID: ' . $post_id . ' - Timeline ID: ' . $wpdb->insert_id);
}
}
});

  • PHP
Copy Code

Let's Chat About this Snippet

Chat Toggle
Voxel Guide AI
Voxel Guide AI
Voxel Guide AI
Voxel Guide AI
Ask me anything about Voxel!
Send
Powered by AI24