I think the best thing you could do is to take a look at others people WP plugins and themes.
WordPress codex has a lot of info on developing plugins using ajax:
http://codex.wordpress.org/AJAX_in_Plugins
For the backend side of things, I think the best approach would be to use a custom post type for the portfolio items. Then, getting each item is a piece of cake using get_posts() or query_posts() function.
There are also some themes out there that have a portfolio system. You might check the Ozon WordPress theme, for example. It is not free, though:
Related Posts:
- How-to implement admin Ajax inside an admin WP_List_Table?
- What is nonce and how to use it with Ajax in WordPress? [duplicate]
- Using AJAX in FrontEnd with WordPress Plugin Boilerplate (wppb.io)
- Using AJAX in a plugin to submit form – REALLY confused
- Add an image gallery to a custom post type?
- Displaying search results in the widget itself?
- Having Problem On Getting WP Post Gallery Images URL
- Adding callback function for wp_ajax_ has no effect
- get all products of one category
- Get returned variable from a function to add_shortcode function
- Modify how gallery.js builds the shortcode [gallery ...] in tinyMCE?
- Plugin Settings not Saving on Ajax re-ordered table
- Need specific kind of “Poll Voting” for WordPress [closed]
- WP_LOCALIZE_SCRIPT doesn’t work
- Admin-ajax.php appending a status code to ajax response
- Cannot search post by taxonomy
- WordPress Ajax callback function from plugin – OOP
- WP AJAX is not working, always returns 0
- Ensure function has completed before allowing another Ajax call
- Frontend Ajax call not working using wp_ajax, wp_enqueue_script and wp_localize_script
- Best plugin for most viewed post [closed]
- What parameter should I pass to wp_enqueue_style to depend on the themes stylesheet?
- Fetching the value of forms in WordPress AJAX
- Any problem in using native jquery ajax style instead of using admin-ajax.php?
- Show special field when correct shipping is chosen
- Make WordPress cache permanent for some pages until edited
- .mo translation strings not loading in PHP scripts that handle AJAX calls
- Adding option to Gallery shortcode
- How can I rewrite a URL to pass requests to a custom method via AJAX? (I can’t use admin-ajax.php)
- How to localize admin.php only once
- Create a new post using rest api and save featured image using an external image url
- wp.template() returns tags in Ajax response
- How to get Metabox custom field to show checked if value is updated using post meta query?
- Fatal error: Uncaught Error: Call to undefined function get_option()
- Create custom HTML/JS app inside page
- Use just a shortcode from another page
- Update Data parameter of a wp_localize_script() call
- jquery & ajax sending data to php
- wp_localize_script is not adding a global variable for javascript
- Can’t get AJAX call working in custom plugin
- Bad Request in AJAX
- 400 Bad Request, in wordpress theme development, wp_ajax
- Ajax is not working in a loop
- ajax recursive calls on wordpress returning answers outsite the function scope
- Ajax submit result opens in admin-ajax.php
- Are there any security risks when submitting data-attribute data through AJAX?
- How to get error object returned by wp_create_user
- Ajax: Populate with content from a post’s ID not working – duplicating current page html instead
- Data not insert and update through ajax and jQuery in admin page?
- WP ajax requests not stacking?
- Issues Updating Post Meta with AJAX (Seems simple but cannot figure it out)
- AJAX button with success callback. (Titan Framework)
- ajax working when function is on child theme but not in plugin page
- AJAX call returns ‘testtest0’ instead of ‘test’ – why?
- Best way to distribute templates and code accross multiple wordpress sites?
- About a programming language starts with [closed]
- add_action wp_ajax_ not loading in plugin file WP Network
- Why is the form not updating when I select a new sector from the list?
- Workflow for new importer plugin – your advices?
- Ajax +wordpress onClick link redirect to new page and create html content
- Development plugin to view and manage scheduled wordpress cron jobs?
- WordPress (pagenow link) in ajaxurl change after i change plugin language
- How to do admin ajax request in a plugin for rest api
- Ajax action has 200 status but response of No response data available for this request
- Jquery php request is returning a weird result
- WordPress Does not grab the string sends useing AJAX response, wp_ajax hook
- Posts form with AJAX request – Plugin development
- Bad request 400 using class based files
- Trying to run a Ajax request from a checkout form in woocommerce via a custom plugin
- “add to cart” links css class “ajax_add_to_cart” doesn’t show in woocommerce in widget sidebar
- Does $this context change in an AJAX callback?
- 400 Bad Request and illegal invocation in wp_ajax based on processData set to false or true
- Rate limiting ajax requests in WordPress
- ajax-action.php can’t find added action
- AJAX call of function containing javascript which is not loaded (Plugin development)
- Performing ajax request in wordpress
- ajax multiple Values
- How to include files in the loop via ajax
- How to handle ajax Request in a complex-structured plugin?
- Using JavaScript in WordPress page to call for server data using AJAX
- wp_ajax add_action fuction won’t fire on custom jQuery action
- Filterable posts using categories
- Ajax Response Error | just getting error as the response
- PHP includes with AJAX actions
- admin-ajax.php returns “No Script Kiddies!” sometimes
- WordPress function is not called and ajax return 0
- Ajax functionality not being called under wordpress plugin
- Pluigin Migration – I need to move a single plugin to a different website
- Array/List Edit in Backend
- WP Cron as Fast as WordPress AJAX?
- Issue on Getting Images URL of the Post Gallery
- Issue on Getting WP Gallery Items In cpt-single.php As Attachments
- WordPress plugin: admin-ajax.php not passing data to custom function
- Ajax url value to pass ‘variable’ to use in query
- Ajax functions – no access to wp-admin.php only online
- Page reload occurs before request finishes
- How to change url’s in WordPress when changing domain [duplicate]
- PHPUnit Ajax Serialization of ‘Closure’ is not allowed
- Return custom product in ajax call loop
- Issue in Creating Dynamic URL in custom wordpress plugin