paperplanefactory / paperplane-photography-theme

A WordPress theme for photographers | 4K images and PWA - ready
https://www.allegramartin.it/
GNU General Public License v3.0
11 stars 3 forks source link
gallery gallery-navigation illustrator lazy-loading masonry photographers photography-theme picture pwa swup swupjs wordpress wordpress-photography-theme wordpress-theme

PaperPlane photography theme

Paperplane photography theme

A WordPress theme for photographers and illustrators

This theme is designed to enhance pictures. UX and UI elements are designed to have the least possible impact on the observation of images. You can see it in action on

PaperPlane photography theme requires Advanced Custom Fields Pro to be installed.
Required set of fields is already included through ACF-JSON folder.
Snippet for required CPT is available here

:sunglasses: Features:

:exclamation: How to set up theme:

:exclamation: How to set up a gallery:

Galleries use WordPress posts and post attachments. To create a gallery:

:exclamation: How to sell pictures trough PayPal:

:electric_plug: Useful plugins to install:

These plugins are suggested based on my experience and are therefore a simple tip.

:sparkling_heart: Cool stuff used in this theme:

:zap: Lighthouse report

Here's a Lighthouse report. You can do even better by converting images into WebP format. Lighthouse report

:smiling_imp: Why this theme is not on WordPress Theme Directory?

I'm lazy, so instead of creating a page to manage theme's options in a traditional way, I preferred to use Advanced Custom Fields Pro.
And yes, I'm so lazy that I don't even want to sell this theme and then have to provide support.

CPT import data for Custom Post Type UI

{"news":{"name":"news","label":"News","singular_label":"News","description":"","public":"true","publicly_queryable":"true","show_ui":"true","show_in_nav_menus":"true","show_in_rest":"true","rest_base":"","rest_controller_class":"","has_archive":"false","has_archive_string":"","exclude_from_search":"false","capability_type":"post","hierarchical":"false","rewrite":"true","rewrite_slug":"","rewrite_withfront":"true","query_var":"true","query_var_slug":"","menu_position":"","show_in_menu":"true","show_in_menu_string":"","menu_icon":"","supports":["title","editor","thumbnail"],"taxonomies":[],"labels":{"menu_name":"","all_items":"","add_new":"","add_new_item":"","edit_item":"","new_item":"","view_item":"","view_items":"","search_items":"","not_found":"","not_found_in_trash":"","parent_item_colon":"","featured_image":"","set_featured_image":"","remove_featured_image":"","use_featured_image":"","archives":"","insert_into_item":"","uploaded_to_this_item":"","filter_items_list":"","items_list_navigation":"","items_list":"","attributes":"","name_admin_bar":""},"custom_supports":""},"book":{"name":"book","label":"Books","singular_label":"Book","description":"","public":"true","publicly_queryable":"true","show_ui":"true","show_in_nav_menus":"true","show_in_rest":"true","rest_base":"","rest_controller_class":"","has_archive":"false","has_archive_string":"","exclude_from_search":"false","capability_type":"post","hierarchical":"false","rewrite":"true","rewrite_slug":"","rewrite_withfront":"true","query_var":"true","query_var_slug":"","menu_position":"","show_in_menu":"true","show_in_menu_string":"","menu_icon":"","supports":["title","editor","thumbnail"],"taxonomies":[],"labels":{"menu_name":"","all_items":"","add_new":"","add_new_item":"","edit_item":"","new_item":"","view_item":"","view_items":"","search_items":"","not_found":"","not_found_in_trash":"","parent_item_colon":"","featured_image":"","set_featured_image":"","remove_featured_image":"","use_featured_image":"","archives":"","insert_into_item":"","uploaded_to_this_item":"","filter_items_list":"","items_list_navigation":"","items_list":"","attributes":"","name_admin_bar":""},"custom_supports":""}}

Code snippet to register CPT in functions.php

function cptui_register_my_cpts() {

    /**
     * Post Type: News.
     */

    $labels = [
        "name" => __( "News", "custom-post-type-ui" ),
        "singular_name" => __( "News", "custom-post-type-ui" ),
    ];

    $args = [
        "label" => __( "News", "custom-post-type-ui" ),
        "labels" => $labels,
        "description" => "",
        "public" => true,
        "publicly_queryable" => true,
        "show_ui" => true,
        "show_in_rest" => true,
        "rest_base" => "",
        "rest_controller_class" => "WP_REST_Posts_Controller",
        "has_archive" => false,
        "show_in_menu" => true,
        "show_in_nav_menus" => true,
        "delete_with_user" => false,
        "exclude_from_search" => false,
        "capability_type" => "post",
        "map_meta_cap" => true,
        "hierarchical" => false,
        "rewrite" => [ "slug" => "news", "with_front" => true ],
        "query_var" => true,
        "supports" => [ "title", "editor", "thumbnail" ],
    ];

    register_post_type( "news", $args );

    /**
     * Post Type: Books.
     */

    $labels = [
        "name" => __( "Books", "custom-post-type-ui" ),
        "singular_name" => __( "Book", "custom-post-type-ui" ),
    ];

    $args = [
        "label" => __( "Books", "custom-post-type-ui" ),
        "labels" => $labels,
        "description" => "",
        "public" => true,
        "publicly_queryable" => true,
        "show_ui" => true,
        "show_in_rest" => true,
        "rest_base" => "",
        "rest_controller_class" => "WP_REST_Posts_Controller",
        "has_archive" => false,
        "show_in_menu" => true,
        "show_in_nav_menus" => true,
        "delete_with_user" => false,
        "exclude_from_search" => false,
        "capability_type" => "post",
        "map_meta_cap" => true,
        "hierarchical" => false,
        "rewrite" => [ "slug" => "book", "with_front" => true ],
        "query_var" => true,
        "supports" => [ "title", "editor", "thumbnail" ],
    ];

    register_post_type( "book", $args );
}

add_action( 'init', 'cptui_register_my_cpts' );