Skip to:
Content
Pages
Categories
Search
Top
Bottom

Use REST to add favorite to custom post type


  • Roy McKenzie
    Participant

    @roymckenzie

    Hello,

    I am thinking about using BuddyPress to help power my headless WordPress-powered social media website. I already have a custom post type. Let’s call it “drop”. Users can create new “drop” post types and they show up in a feed. The “post” post type is reserved for full articles while a “drop” is something akin to an X/Twitter post.

    I have rolled my own “reaction” API endpoint that records reactions to a “drop” post type or a “post” post type. Right now it is just a “like”.

    Is there a way to add a BuddyPress-powered favorite to a “drop” or “post” via the API? I saw there was documentation about registering a custom post type for tracking activity. I also saw documentation about creating a new “activity” via the REST API. It was not clear to me how to do this.

    Appreciate any direction.

Viewing 1 replies (of 1 total)

  • chbing5828
    Participant

    @chbing5828

    Implementing favorites for custom post types using BuddyPress and REST API involves a few strategic steps. Here, I’ll outline a method to integrate this functionality effectively:

    ### Step 1: Ensure BuddyPress REST API Is Enabled

    Firstly, ensure that the REST API support is active in BuddyPress. BuddyPress provides REST endpoints for various components, but you may need to confirm that it’s set up to interact with your custom post types.

    ### Step 2: Register Custom Post Type for BuddyPress Activity Tracking

    You mentioned you’ve seen documentation related to registering custom post types for tracking activity. This is crucial as BuddyPress needs to be aware of these custom post types to interact with them effectively. You can do this by adding a function to your theme’s functions.php file or a site-specific plugin:

    `php
    function register_custom_post_type_activity_tracking() {
    bp_set_post_types( array(
    ‘drop’ => array(
    ‘track_activity’ => true
    )
    ) );
    }
    add_action( ‘bp_init’, ‘register_custom_post_type_activity_tracking’ );
    `
    This code snippet informs BuddyPress to track activities (like posts and updates) for the “drop” custom post type.

    ### Step 3: Create a REST Endpoint for Favorite Action

    You will need to create a custom REST API endpoint to handle the favorite action. This endpoint will be responsible for adding and removing favorites.

    `php
    add_action( ‘rest_api_init’, function () {
    register_rest_route( ‘buddypress/v1’, ‘/favorite/’, array(
    ‘methods’ => ‘POST’,
    ‘callback’ => ‘handle_favorite’,
    ‘permission_callback’ => function () {
    return is_user_logged_in(); // Ensure the user is logged in
    }
    ));
    });

    function handle_favorite( WP_REST_Request $request ) {
    $user_id = get_current_user_id();
    $post_id = $request[‘post_id’];
    $action = $request[‘action’]; // ‘add’ or ‘remove’

    if ($action === ‘add’) {
    // Logic to add a favorite
    bp_activity_add_user_favorite( $post_id, $user_id );
    } else if($action === ‘remove’) {
    // Logic to remove a favorite
    bp_activity_remove_user_favorite( $post_id, $user_id );
    }

    return new WP_REST_Response( array(‘success’ => true), 200 );
    }
    `

    ### Step 4: Interact with the REST API

    You can now interact with this API using JavaScript or any other client that can make HTTP requests. Here’s an example of how you might call this API using JavaScript Fetch API:

    `javascript
    function toggleFavorite(postId, action) {
    fetch(‘/wp-json/buddypress/v1/favorite/’, {
    method: ‘POST’,
    headers: {
    ‘Content-Type’: ‘application/json’,
    ‘Authorization’: ‘Bearer YOUR_ACCESS_TOKEN’ // You should implement authorization
    },
    body: JSON.stringify({ post_id: postId, action: action })
    })
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(error => console.error(‘Error:’, error));
    }

    // Usage
    toggleFavorite(123, ‘add’); // Add a favorite
    toggleFavorite(123, ‘remove’); // Remove a favorite
    `

    ### Step 5: Test and Refine

    After implementing, conduct thorough testing to ensure that your favorites system works as expected. Check both the functionality and security aspects, especially focusing on permissions and data validation.

    By following these steps, you should be able to add a favorites feature to your custom post types leveraging BuddyPress and the WordPress REST API effectively. beach buggy racing cheats apk

Viewing 1 replies (of 1 total)
  • You must be logged in to reply to this topic.
Skip to toolbar