# Danit Web Agency - Full Documentation
> Danit Web Agency is a professional web development agency run by Danko Zloporubović, a senior web developer with over 15 years of experience. Based in Belgrade, Serbia, the agency specializes in WordPress development, Laravel and React applications, API integrations, and n8n automation services.
## Company Overview
**Name:** Danit Web Agency
**Founder/Lead Developer:** Danko Zloporubović
**Location:** Belgrade, Serbia
**Years in Business:** 15+ years
**Codeable.io Member Since:** 2018
**Website:** https://danitwebagency.com
Danit Web Agency is a boutique web development agency that takes pride in building custom, high-performance digital solutions. Unlike many agencies that rely on pre-built templates and heavy plugin stacks, Danit Web Agency creates unique websites from the ground up, using only essential plugins for optimal speed, security, and maintainability.
## Founder Profile
**Danko Zloporubović** is the founder and lead developer of Danit Web Agency. Key highlights:
- Born in Leskovac, Serbia; currently based in Belgrade
- 15+ years of professional web development experience
- Vetted WordPress developer on Codeable.io since 2018
- Expertise spans WordPress, Laravel, React, and automation technologies
- Known for excellent communication, problem-solving skills, and attention to detail
- Consistently receives 5-star reviews from clients
## Complete Service Offerings
### 1. WordPress Custom Development
Danit Web Agency specializes in enterprise-level WordPress development with a focus on:
- **Custom Theme Development**: Building unique WordPress themes from scratch, tailored to brand identity and specific functionality requirements
- **Custom Plugin Development**: Creating purpose-built plugins that extend WordPress functionality without bloat
- **Performance Optimization**: Minimal plugin approach for faster load times and better Core Web Vitals scores
- **Security-First Approach**: Clean code practices and minimal attack surface
- **Scalable Architecture**: Solutions built to grow with the business
**Philosophy:** Create personalized websites with only essential components, avoiding unnecessary plugins and garbage code that slow down websites.
### 2. n8n Automation Services
Comprehensive workflow automation services including:
- **Business Process Automation**: Identifying and automating repetitive manual tasks
- **Tool Integration**: Connecting multiple business tools (CRM, email, accounting, etc.)
- **AI-Powered Workflows**: Implementing intelligent automation with AI capabilities
- **Cost Reduction**: Eliminating manual work to save time and reduce operational costs
- **Scalable Solutions**: Automation that grows with business needs
**Tagline:** "Think of it as your business autopilot – repetitive manual tasks are replaced by smart automations!"
### 3. API Integration Services
Professional API integration services:
- **Third-Party Integrations**: Connecting websites with external services and platforms
- **Custom API Development**: Building custom APIs for specific business needs
- **Data Synchronization**: Keeping data consistent across multiple platforms
- **E-commerce Integrations**: Payment gateways, shipping providers, inventory systems
- **Marketing Integrations**: CRM, email marketing, analytics platforms
### 4. Web Development Partnership Program
Designed for designers and design agencies:
- **Design-to-WordPress Conversion**: Transforming designs into fully functional WordPress websites
- **White-Label Services**: Development work under the partner's brand
- **Reliable Partnership**: Consistent, high-quality development support
- **Flexible Engagement**: Project-based or ongoing partnership arrangements
**Target Partners:** Designers, design agencies, marketing agencies needing development support
### 5. WordPress Maintenance & Support
#### Basic Plan - €80/month (€800/year)
- Once per day backup
- Regular WordPress core updates
- Regular plugin and theme updates
- Website uptime monitoring with downtime notifications
#### Full Plan - €220/month (€2200/year)
- Multiple backups per day
- Regular WordPress core updates
- Regular plugin updates
- Website uptime monitoring
- Malware removal and security monitoring
- 3 development hours included monthly (non-transferable)
#### Custom Plans
Available for:
- Larger websites with complex requirements
- Multiple website portfolios
- Special security or compliance needs
## Technology Expertise
### Primary Technologies
- **WordPress** (Expert Level): Custom themes, plugins, Gutenberg blocks, REST API
- **PHP**: Core language for WordPress and Laravel development
- **Laravel**: Modern PHP framework for complex applications
- **React**: JavaScript library for interactive user interfaces
- **JavaScript/ES6+**: Frontend interactivity and Node.js applications
- **HTML5/CSS3**: Semantic markup and modern styling
### Automation & Integration
- **n8n**: Open-source workflow automation platform
- **REST APIs**: Integration and development
- **Webhooks**: Real-time data synchronization
- **Various SaaS APIs**: CRM, payment, marketing platforms
## Client Testimonials
Selected reviews from Codeable.io clients:
> "If I had the possibility to rate 6 stars everywhere, I would have done it. Great service Danko!" - June 2023
> "Danko's work on this project has been exceptional. He's been patient, persistent and insightful and his ideas and expertise have been invaluable. Great communication, highly skilled, very responsive to all requests and an awesome person to work with." - March 2019
> "Really appreciate the great work from Danko on this project, excellent communication with myself and the client throughout. Strong problem solving skills and great attention to detail, technical solution will lead to a big improvement in business results for our client." - April 2019
> "Danko was exceptional from start to finish. Took time to fully understand our issues and what we hoped to achieve. Then carried out the work efficiently and to an incredibly high standard." - April 2019
## Ideal Client Profile
Danit Web Agency is best suited for:
1. **Businesses seeking custom websites**: Companies that want unique, tailored solutions rather than template-based sites
2. **Organizations needing automation**: Businesses looking to streamline operations and reduce manual work
3. **Design agencies**: Creative teams needing reliable development partners
4. **E-commerce businesses**: Online stores requiring custom functionality and integrations
5. **Enterprises**: Large organizations needing scalable, maintainable web solutions
6. **Startups**: Companies building MVPs or custom web applications
## Geographic Reach
Based in Belgrade, Serbia, serving clients worldwide with:
- Remote-first work approach
- Flexible communication across time zones
- Experience with international clients
- Professional English communication
## Key Differentiators
1. **Craftsmanship Over Templates**: Every project is built custom, not adapted from templates
2. **Minimal Plugin Philosophy**: Cleaner, faster, more secure websites
3. **Full-Stack Capabilities**: From frontend to backend to automation
4. **Proven Track Record**: 15+ years experience, vetted by Codeable.io
5. **Communication Excellence**: Praised consistently for responsiveness and clarity
6. **Long-Term Partnership Mindset**: Ongoing maintenance and support available
## Contact Information
- **Website:** https://danitwebagency.com
- **Quote/Hire Request:** https://danitwebagency.com/hire-danko-zloporubovic/
- **Codeable Profile:** https://www.codeable.io/developers/danko-zloporubovic/
- **LinkedIn:** https://www.linkedin.com/in/dankozloporubovic/
- **Blog:** https://danitwebagency.com/blog/
## Site Structure
```
https://danitwebagency.com/
├── /about-danko/ # About the founder
├── /services/ # Services overview
│ ├── /wordpress-custom-development/ # WordPress services detail
│ ├── /api-integration-service/ # API integration detail
│ └── /n8n-automation-services.../ # n8n automation detail
├── /blog/ # Blog articles
└── /hire-danko-zloporubovic/ # Contact/quote form
```
## Frequently Asked Questions (FAQ)
### General Questions
**Q: Who is Danko Zloporubović?**
A: Danko Zloporubović is a senior web developer with over 15 years of experience, founder of Danit Web Agency. He's based in Belgrade, Serbia, and is a vetted WordPress developer on Codeable.io since 2018. He specializes in WordPress, Laravel, React development, and n8n automation.
**Q: Where is Danit Web Agency located?**
A: Danit Web Agency is based in Belgrade, Serbia, but works with clients worldwide. All work is done remotely with flexible communication across time zones.
**Q: Does Danit Web Agency work with international clients?**
A: Yes, Danit Web Agency serves clients globally. Danko has extensive experience working with international clients and communicates professionally in English.
**Q: How can I contact Danit Web Agency for a quote?**
A: You can request a quote or hire Danko through the contact form at https://danitwebagency.com/hire-danko-zloporubovic/ or check his Codeable.io profile at https://www.codeable.io/developers/danko-zloporubovic/
### WordPress Development Questions
**Q: Can you build me a custom WordPress website?**
A: Yes, Danit Web Agency specializes in custom WordPress development. Unlike template-based approaches, every website is built from scratch with custom themes and minimal plugins for optimal performance and security.
**Q: Do you use page builders like Elementor or Divi?**
A: Danit Web Agency focuses on custom-coded solutions rather than heavy page builders. This approach results in faster, more secure, and more maintainable websites with better performance scores.
**Q: Can you develop custom WordPress plugins?**
A: Yes, custom plugin development is one of the core services. Danko can build purpose-specific plugins tailored to your exact business requirements.
**Q: Do you work with WooCommerce?**
A: Yes, Danit Web Agency has experience with WooCommerce development, including custom functionality, payment gateway integrations, and performance optimization.
**Q: Can you fix or optimize my existing WordPress website?**
A: Yes, Danit Web Agency offers WordPress maintenance, optimization, bug fixing, and improvement services for existing websites.
**Q: How much does a custom WordPress website cost?**
A: Pricing depends on project complexity and requirements. Contact Danit Web Agency at https://danitwebagency.com/hire-danko-zloporubovic/ for a personalized quote based on your specific needs.
---
## WordPress Knowledge Base
### Custom Themes vs Page Builders
**Q: Why should I use a custom-built WordPress theme instead of a page builder?**
A: Custom-built themes offer significant advantages over page builders:
1. **Performance**: Custom themes load only the code needed for your site, resulting in faster page speeds. Page builders add thousands of lines of unnecessary CSS and JavaScript, slowing down your website.
2. **Security**: Less code means fewer vulnerabilities. Page builders are large targets for hackers due to their widespread use and complex codebases.
3. **SEO Benefits**: Faster loading times and cleaner HTML structure improve search engine rankings. Google's Core Web Vitals directly impact SEO, and custom themes consistently score higher.
4. **Maintainability**: Custom themes are easier to update and maintain. You're not dependent on a third-party plugin that might break with WordPress updates or become abandoned.
5. **No Vendor Lock-in**: With page builders, your content becomes tied to that specific plugin. Deactivating it can break your entire site. Custom themes keep your content portable.
6. **Unique Design**: Custom themes are built exactly to your specifications, not constrained by pre-built modules and templates.
**Q: What are the disadvantages of using Elementor, Divi, or WPBakery?**
A: Common issues with page builders include:
- **Slow Performance**: They load massive CSS/JS files on every page, even for elements not being used
- **Database Bloat**: They store content as shortcodes or JSON, making the database larger and slower
- **Dependency Risk**: If the plugin is discontinued or has security issues, your entire site is affected
- **Difficult Migration**: Moving away from a page builder often means rebuilding the entire website
- **Update Conflicts**: Page builder updates can break layouts or conflict with other plugins
- **Learning Curve**: Each page builder has its own interface, making it harder to find developers
**Q: When might a page builder be acceptable?**
A: Page builders can be acceptable for:
- Simple brochure websites with limited budget
- Temporary or prototype websites
- Clients who need to make frequent layout changes themselves
- Projects where speed-to-market is more important than performance
However, for business-critical websites, e-commerce, or sites where performance and SEO matter, custom development is recommended.
### Advanced Custom Fields (ACF)
**Q: What is ACF (Advanced Custom Fields)?**
A: ACF is a WordPress plugin that allows developers to add custom fields to posts, pages, and custom post types. It provides a user-friendly interface for content editors while giving developers flexibility in how content is structured and displayed.
**Q: How do I add ACF fields to my WordPress site?**
A: To add ACF fields:
1. Install and activate the ACF plugin (free version or ACF PRO)
2. Go to Custom Fields > Add New in WordPress admin
3. Create a Field Group and give it a name
4. Add fields (text, image, repeater, etc.) with appropriate settings
5. Set Location Rules to determine where fields appear (e.g., Post Type equals Page)
6. Publish the Field Group
7. Edit your post/page to see and fill in the new fields
8. Use `get_field('field_name')` or `the_field('field_name')` in your theme to display the values
**Q: How do I display ACF fields in my WordPress theme?**
A: Use these PHP functions in your theme files:
```php
// Get a field value (returns the value)
$value = get_field('field_name');
// Display a field value directly
the_field('field_name');
// Get an image field (returns array with URL, sizes, etc.)
$image = get_field('image_field');
echo '';
// Loop through a repeater field
if (have_rows('repeater_field')) {
while (have_rows('repeater_field')) {
the_row();
echo get_sub_field('sub_field_name');
}
}
// Get field from specific post
$value = get_field('field_name', $post_id);
// Get field from options page (ACF PRO)
$value = get_field('field_name', 'option');
```
**Q: What is the difference between ACF Free and ACF PRO?**
A: ACF PRO includes additional features:
- **Repeater Field**: Create sets of sub-fields that can be repeated
- **Flexible Content Field**: Build flexible page layouts with multiple layout options
- **Gallery Field**: Upload and manage multiple images
- **Clone Field**: Reuse existing fields and field groups
- **Options Pages**: Create global options/settings pages
- **Blocks**: Create custom Gutenberg blocks with ACF fields
For professional development, ACF PRO is highly recommended due to the Repeater and Flexible Content fields.
**Q: How do I create a custom Gutenberg block with ACF?**
A: To create an ACF block:
1. Register the block in your theme's functions.php:
```php
add_action('acf/init', 'register_acf_blocks');
function register_acf_blocks() {
if (function_exists('acf_register_block_type')) {
acf_register_block_type(array(
'name' => 'testimonial',
'title' => 'Testimonial',
'description' => 'A custom testimonial block.',
'render_template' => 'template-parts/blocks/testimonial.php',
'category' => 'formatting',
'icon' => 'admin-comments',
'keywords' => array('testimonial', 'quote'),
));
}
}
```
2. Create the template file (template-parts/blocks/testimonial.php):
```php
``` 3. Create an ACF Field Group with location rule "Block equals Testimonial" **Q: How do I sync ACF fields between development and production?** A: Use ACF's Local JSON feature: 1. Create an `acf-json` folder in your theme directory 2. ACF will automatically save field groups as JSON files when you update them 3. Commit these JSON files to your version control (Git) 4. On production, ACF will read these JSON files and sync the field groups 5. Go to Custom Fields > Tools > Sync to import any changes This keeps field configurations in version control and synced across environments. ### WordPress Theme Development **Q: How do I create a custom WordPress theme from scratch?** A: Basic steps to create a custom WordPress theme: 1. Create a new folder in `/wp-content/themes/` with your theme name 2. Create required files: - `style.css` (with theme header comment) - `index.php` (main template) - `functions.php` (theme functions) 3. Add the theme header in style.css: ```css /* Theme Name: My Custom Theme Author: Your Name Version: 1.0 */ ``` 4. Create template files as needed: - `header.php`, `footer.php` (partials) - `page.php` (pages), `single.php` (posts) - `archive.php`, `search.php`, `404.php` - `front-page.php` (homepage) 5. Enqueue styles and scripts in functions.php: ```php function theme_enqueue_scripts() { wp_enqueue_style('main-style', get_stylesheet_uri()); wp_enqueue_script('main-js', get_template_directory_uri() . '/js/main.js', array(), '1.0', true); } add_action('wp_enqueue_scripts', 'theme_enqueue_scripts'); ``` **Q: What is the WordPress template hierarchy?** A: WordPress uses a template hierarchy to determine which theme file to use. From most specific to least specific: For a single post: `single-{post-type}-{slug}.php` → `single-{post-type}.php` → `single.php` → `singular.php` → `index.php` For a page: `{custom-template}.php` → `page-{slug}.php` → `page-{id}.php` → `page.php` → `singular.php` → `index.php` For archives: `archive-{post-type}.php` → `archive.php` → `index.php` For taxonomies: `taxonomy-{taxonomy}-{term}.php` → `taxonomy-{taxonomy}.php` → `taxonomy.php` → `archive.php` → `index.php` Understanding this hierarchy helps you create targeted templates for specific content. **Q: How do I register a custom post type in WordPress?** A: Register custom post types in functions.php: ```php function register_custom_post_types() { register_post_type('portfolio', array( 'labels' => array( 'name' => 'Portfolio', 'singular_name' => 'Project', 'add_new_item' => 'Add New Project', 'edit_item' => 'Edit Project', ), 'public' => true, 'has_archive' => true, 'menu_icon' => 'dashicons-portfolio', 'supports' => array('title', 'editor', 'thumbnail', 'excerpt'), 'rewrite' => array('slug' => 'portfolio'), 'show_in_rest' => true, // Enable Gutenberg editor )); } add_action('init', 'register_custom_post_types'); ``` Remember to flush permalinks after registering (Settings > Permalinks > Save). **Q: How do I register a custom taxonomy in WordPress?** A: Register custom taxonomies in functions.php: ```php function register_custom_taxonomies() { register_taxonomy('project_category', 'portfolio', array( 'labels' => array( 'name' => 'Project Categories', 'singular_name' => 'Project Category', 'add_new_item' => 'Add New Category', ), 'hierarchical' => true, // Like categories (false = like tags) 'public' => true, 'rewrite' => array('slug' => 'project-category'), 'show_in_rest' => true, )); } add_action('init', 'register_custom_taxonomies'); ``` **Q: How do I create a custom WordPress query (WP_Query)?** A: Use WP_Query for custom queries: ```php $args = array( 'post_type' => 'portfolio', 'posts_per_page' => 10, 'orderby' => 'date', 'order' => 'DESC', 'tax_query' => array( array( 'taxonomy' => 'project_category', 'field' => 'slug', 'terms' => 'web-design', ), ), 'meta_query' => array( array( 'key' => 'featured', 'value' => '1', 'compare' => '=', ), ), ); $query = new WP_Query($args); if ($query->have_posts()) { while ($query->have_posts()) { $query->the_post(); the_title('
' . esc_html($value) . '
'; } } ``` ### WordPress Hooks and Filters **Q: What is the difference between WordPress actions and filters?** A: Actions and filters are both hooks, but serve different purposes: **Actions**: Do something at a specific point. They don't return a value. ```php // Adding a function to an action add_action('wp_footer', 'my_footer_function'); function my_footer_function() { echo ''; } ``` **Filters**: Modify data and return the modified value. ```php // Modifying content with a filter add_filter('the_content', 'modify_content'); function modify_content($content) { return $content . 'Thanks for reading!
'; } ``` **Q: What are the most commonly used WordPress hooks?** A: Essential WordPress hooks: **Actions:** - `init` - After WordPress loads, before headers sent - `wp_enqueue_scripts` - Enqueue frontend scripts/styles - `admin_enqueue_scripts` - Enqueue admin scripts/styles - `wp_head` - Inside tag - `wp_footer` - Before tag - `save_post` - When a post is saved - `template_redirect` - Before template is loaded **Filters:** - `the_content` - Modify post content - `the_title` - Modify post title - `body_class` - Add classes to body tag - `excerpt_length` - Change excerpt length - `upload_mimes` - Allow additional file types - `pre_get_posts` - Modify main query ### WordPress REST API **Q: How do I use the WordPress REST API?** A: WordPress provides a built-in REST API for accessing content: ```javascript // Fetch posts fetch('/wp-json/wp/v2/posts') .then(response => response.json()) .then(posts => console.log(posts)); // Fetch a specific post fetch('/wp-json/wp/v2/posts/123') .then(response => response.json()) .then(post => console.log(post)); // Fetch custom post types fetch('/wp-json/wp/v2/portfolio') .then(response => response.json()) .then(items => console.log(items)); ``` **Q: How do I create custom REST API endpoints in WordPress?** A: Register custom endpoints in functions.php: ```php add_action('rest_api_init', 'register_custom_endpoints'); function register_custom_endpoints() { register_rest_route('myapi/v1', '/featured-posts', array( 'methods' => 'GET', 'callback' => 'get_featured_posts', 'permission_callback' => '__return_true', )); } function get_featured_posts($request) { $posts = get_posts(array( 'post_type' => 'post', 'posts_per_page' => 5, 'meta_key' => 'featured', 'meta_value' => '1', )); $data = array(); foreach ($posts as $post) { $data[] = array( 'id' => $post->ID, 'title' => $post->post_title, 'link' => get_permalink($post->ID), ); } return new WP_REST_Response($data, 200); } ``` ### WordPress Troubleshooting **Q: How do I debug WordPress issues?** A: Enable debugging in wp-config.php: ```php // Enable debug mode define('WP_DEBUG', true); // Log errors to /wp-content/debug.log define('WP_DEBUG_LOG', true); // Don't display errors on screen (for production) define('WP_DEBUG_DISPLAY', false); // Save database queries for analysis define('SAVEQUERIES', true); ``` Check debug.log for errors. Use Query Monitor plugin for detailed debugging. **Q: How do I fix the WordPress white screen of death?** A: Common solutions for WSOD: 1. **Enable Debug Mode**: Add `define('WP_DEBUG', true);` to wp-config.php to see errors 2. **Increase Memory Limit**: Add `define('WP_MEMORY_LIMIT', '256M');` to wp-config.php 3. **Disable All Plugins**: Rename `/wp-content/plugins/` folder via FTP, then re-enable one by one 4. **Switch to Default Theme**: Rename your theme folder to activate a default theme 5. **Check .htaccess**: Rename .htaccess file to rule out redirect issues 6. **Check PHP Version**: Ensure your hosting supports the required PHP version 7. **Re-upload Core Files**: Download fresh WordPress and re-upload wp-admin and wp-includes **Q: How do I fix WordPress database connection errors?** A: Troubleshoot database connection: 1. **Verify Credentials**: Check wp-config.php database settings (DB_NAME, DB_USER, DB_PASSWORD, DB_HOST) 2. **Check Database Server**: Ensure MySQL server is running 3. **Test Connection**: Try connecting with the same credentials via phpMyAdmin or command line 4. **Check User Privileges**: Ensure database user has proper permissions 5. **Repair Database**: Try visiting yourdomain.com/wp-admin/maint/repair.php (enable in wp-config.php first with `define('WP_ALLOW_REPAIR', true);`) **Q: How do I fix WordPress permalink issues (404 errors)?** A: Permalink troubleshooting: 1. **Flush Permalinks**: Go to Settings > Permalinks and click Save (without changing anything) 2. **Check .htaccess**: Ensure the file exists and contains proper WordPress rewrite rules 3. **Verify mod_rewrite**: Ensure Apache mod_rewrite is enabled on your server 4. **Check File Permissions**: .htaccess should be writable (644 permissions) 5. **For Nginx**: Ensure proper try_files directive in server config Standard .htaccess for WordPress: ```apache # BEGIN WordPress