Plugin Directory

Changeset 3290862


Ignore:
Timestamp:
05/10/2025 10:29:05 AM (11 months ago)
Author:
grzelkowski
Message:

version 1.7.1

Location:
quick-ajax-post-loader/trunk
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • quick-ajax-post-loader/trunk/css/style.css

    r3287563 r3290862  
    177177    width:100%;
    178178    padding:1rem;
     179    -webkit-box-sizing: border-box;
     180            box-sizing: border-box;
    179181}
    180182.quick-ajax-posts-container.quick-ajax-theme .col-qty-2 .qapl-post-item{
  • quick-ajax-post-loader/trunk/css/style.min.css

    r3287563 r3290862  
    1 .quick-ajax-filter-container.quick-ajax-theme{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:10px;margin-bottom:2rem;text-align:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.quick-ajax-filter-container.quick-ajax-theme button.qapl-button,.quick-ajax-sort-options-container.quick-ajax-theme select{padding:10px 20px;font-size:16px;line-height:1;border:2px solid #1e1e1e;background-color:#1e1e1e;color:#fff;-webkit-box-shadow:0 0 22px rgba(0,0,0,.2);box-shadow:0 0 22px rgba(0,0,0,.2);border-radius:21px;outline:unset;-webkit-transition:all .3s ease;transition:all .3s ease}.quick-ajax-filter-container.quick-ajax-theme button.qapl-button:focus{outline:0;text-decoration:none;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}.quick-ajax-filter-container.quick-ajax-theme button.qapl-button.active,.quick-ajax-filter-container.quick-ajax-theme button.qapl-button:hover{border:2px solid #1e1e1e;background-color:transparent;color:#1e1e1e;-webkit-box-shadow:0 0 14px rgba(0,0,0,.5);box-shadow:0 0 14px rgba(0,0,0,.5);-webkit-transition:all .3s ease;transition:all .3s ease}.quick-ajax-controls-container{display:-webkit-box;display:-ms-flexbox;display:flex;gap:10px}.quick-ajax-controls-container .quick-ajax-filter-container{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.quick-ajax-controls-container .quick-ajax-sort-options-container{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.quick-ajax-controls-container .quick-ajax-filter-container.quick-ajax-theme{text-align:left;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:start}.quick-ajax-sort-options-container.quick-ajax-theme{margin-left:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.quick-ajax-sort-options-container.quick-ajax-theme .quick-ajax-sort-option-wrapper{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;position:relative}.quick-ajax-sort-options-container.quick-ajax-theme select{background-color:#1e1e1e;background-image:url('data:image/svg+xml;charset=US-ASCII,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 4 5"><path fill="%23ffffff" d="M2 5L0 3h4z"/></svg>');background-repeat:no-repeat;background-position:calc(100% - 20px) 8px;background-size:10px;padding:5px 40px 5px 20px;min-height:40px;font-weight:500;text-align:center;outline:0;cursor:pointer;position:relative;-webkit-appearance:none;-moz-appearance:none;appearance:none}.quick-ajax-sort-options-container.quick-ajax-theme .quick-ajax-sort-option-wrapper select:hover,.quick-ajax-sort-options-container.quick-ajax-theme .quick-ajax-sort-option-wrapper:hover select{background-color:transparent;background-image:url('data:image/svg+xml;charset=US-ASCII,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 4 5"><path fill="%231e1e1e" d="M2 5L0 3h4z"/></svg>');background-repeat:no-repeat;background-position:calc(100% - 20px) 8px;background-size:10px;border:2px solid #1e1e1e;color:#1e1e1e;-webkit-box-shadow:0 0 14px rgba(0,0,0,.5);box-shadow:0 0 14px rgba(0,0,0,.5);-webkit-transition:background-color .3s ease;transition:background-color .3s ease}.quick-ajax-sort-options-container.quick-ajax-theme .quick-ajax-sort-option-wrapper select:focus{background-color:transparent;background-image:url('data:image/svg+xml;charset=US-ASCII,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 4 5"><path fill="%231e1e1e" d="M2 0L0 2h4z"/></svg>');background-repeat:no-repeat;background-position:calc(100% - 20px) 16px;background-size:10px;color:#1e1e1e;-webkit-transition:all .3s ease;transition:all .3s ease}.quick-ajax-sort-options-container.quick-ajax-theme .quick-ajax-sort-option-wrapper select option{background-color:#fff;color:#1e1e1e;font-weight:500;padding:10px;text-align:center}.quick-ajax-posts-container.quick-ajax-theme .quick-ajax-posts-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;width:calc(100% + 2rem);margin-left:-1rem}.quick-ajax-posts-container.quick-ajax-theme .qapl-no-posts-found{display:block;width:100%;text-align:center}.quick-ajax-posts-container.quick-ajax-theme .quick-ajax-end-message-container{display:block;width:100%;text-align:center;opacity:0;-webkit-animation:qapl-fade-in .3s ease forwards;animation:qapl-fade-in .3s ease forwards;-webkit-animation-delay:.5s;animation-delay:.5s}.quick-ajax-posts-container.quick-ajax-theme .qapl-load-more-button{display:block;width:auto;margin:0 auto}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;width:100%;padding:1rem}.quick-ajax-posts-container.quick-ajax-theme .col-qty-2 .qapl-post-item{width:calc(100% / 2)}.quick-ajax-posts-container.quick-ajax-theme .col-qty-3 .qapl-post-item{width:calc(100% / 3)}.quick-ajax-posts-container.quick-ajax-theme .col-qty-4 .qapl-post-item{width:calc(100% / 4)}.quick-ajax-posts-container.quick-ajax-theme .col-qty-5 .qapl-post-item{width:calc(100% / 5)}.quick-ajax-posts-container.quick-ajax-theme .col-qty-6 .qapl-post-item{width:calc(100% / 6)}.quick-ajax-posts-container.quick-ajax-theme .col-qty-7 .qapl-post-item{width:calc(100% / 7)}.quick-ajax-posts-container.quick-ajax-theme .col-qty-8 .qapl-post-item{width:calc(100% / 8)}.quick-ajax-posts-container.quick-ajax-theme .col-qty-9 .qapl-post-item{width:calc(100% / 9)}.quick-ajax-posts-container.quick-ajax-theme .col-qty-10 .qapl-post-item{width:calc(100% / 10)}.quick-ajax-posts-container.quick-ajax-theme .col-qty-11 .qapl-post-item{width:calc(100% / 11)}.quick-ajax-posts-container.quick-ajax-theme .col-qty-12 .qapl-post-item{width:calc(100% / 12)}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item a:focus{outline:0;text-decoration:none;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item a>div{position:relative;display:block;width:100%}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item a{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;width:100%}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item.qapl-post-item-default a{background-color:#fff;-webkit-box-shadow:0 0 10px rgba(0,0,0,.2);box-shadow:0 0 10px rgba(0,0,0,.2);text-decoration:none;border-radius:6px;text-decoration:none;-webkit-transition:all .3s ease;transition:all .3s ease}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item.qapl-post-item-default a:focus img{outline:0}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item.qapl-post-item-default a:hover{-webkit-box-shadow:0 0 10px rgba(0,0,0,.5);box-shadow:0 0 10px rgba(0,0,0,.5);-webkit-transition:all .3s ease;transition:all .3s ease}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item.qapl-post-item-default a>div{opacity:1;-webkit-transition:all .3s ease;transition:all .3s ease}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item.qapl-post-item-default a:hover>div{opacity:.8;-webkit-transition:all .3s ease;transition:all .3s ease}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item.qapl-post-item-default .qapl-post-image{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item.qapl-post-item-default .qapl-post-image img{width:100%;max-width:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center;border-top-right-radius:6px;border-top-left-radius:6px}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item.qapl-post-item-default .qapl-post-date{position:absolute;top:1rem;left:1rem;z-index:1;background-color:rgba(255,255,255,.6);display:-webkit-box;display:-ms-flexbox;display:flex;width:auto;border-radius:6px}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item.qapl-post-item-default .qapl-post-date span{line-height:1;padding:.5rem;font-size:14px;font-weight:700;color:#1e1e1e}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item.qapl-post-item-default .qapl-post-title{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;padding:.5rem 1rem 1rem}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item.qapl-post-item-default .qapl-post-title,.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item.qapl-post-item-default .qapl-post-title>*{color:#1e1e1e}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item.qapl-post-item-default .qapl-no-image+.qapl-post-title{margin-top:3rem}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item.qapl-post-item-default .qapl-post-description{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3;padding:0 1rem 1rem}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item.qapl-post-item-default .qapl-post-description,.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item.qapl-post-item-default .qapl-post-description *{color:#1e1e1e}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item.qapl-post-item-default .qapl-read-more{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4;text-align:right;padding:0 1rem 1rem;color:#1e1e1e;margin-top:auto}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item.qapl-post-item-default .qapl-read-more p{margin-bottom:0}.quick-ajax-posts-container.quick-ajax-theme.loading{margin-bottom:0}.quick-ajax-posts-container.quick-ajax-theme .quick-ajax-load-more-container{display:block;width:100%;opacity:1}.quick-ajax-posts-container.quick-ajax-theme.loading .quick-ajax-load-more-container{display:none;opacity:0}.quick-ajax-posts-container.quick-ajax-theme .quick-ajax-load-more-container .qapl-load-more-wrapper{margin-top:1rem}.quick-ajax-posts-container.quick-ajax-theme .qapl-load-more-button{display:block;width:auto;margin:0 auto}.quick-ajax-posts-container.quick-ajax-theme .quick-ajax-load-more-container .qapl-load-more-button{display:block;padding:10px 20px;font-size:18px;line-height:1;border:2px solid #1e1e1e;background-color:#1e1e1e;color:#fff;-webkit-box-shadow:0 0 22px rgba(0,0,0,.2);box-shadow:0 0 22px rgba(0,0,0,.2);border-radius:21px;outline:unset;-webkit-transition:all .3s;transition:all .3s}.quick-ajax-posts-container.quick-ajax-theme .quick-ajax-load-more-container .qapl-load-more-button:hover{border:2px solid #1e1e1e;background-color:transparent;color:#1e1e1e;-webkit-box-shadow:0 0 14px rgba(0,0,0,.5);box-shadow:0 0 14px rgba(0,0,0,.5);-webkit-transition:all .3s ease;transition:all .3s ease}.quick-ajax-posts-container .quick-ajax-load-more-container.infinite-scroll{visibility:hidden}.quick-ajax-posts-container .quick-ajax-loader-container{visibility:hidden;opacity:0;height:0;-webkit-transition:opacity .1s ease;transition:opacity .1s ease}.quick-ajax-posts-container.loading .quick-ajax-loader-container{visibility:visible;opacity:1;height:auto;-webkit-transition:opacity .3s ease;transition:opacity .3s ease}.quick-ajax-posts-container.quick-ajax-theme .quick-ajax-loader-container{display:-webkit-box;display:-ms-flexbox;display:flex;margin:0 auto 0}.quick-ajax-posts-container.quick-ajax-theme.loading .quick-ajax-loader-container{display:-webkit-box;display:-ms-flexbox;display:flex;min-height:42px;height:auto}.qapl-loader-default{border:8px solid #ebeaea;border-top:8px solid #fff;border-radius:50%;width:60px;height:60px;margin:1rem auto 1rem;-webkit-animation:loader-one-spin 2s linear infinite;animation:loader-one-spin 2s linear infinite}.qapl-loader-default.dark-loader{border:8px solid rgba(0,0,0,.3);border-top:8px solid rgba(0,0,0,.6)}@-webkit-keyframes loader-one-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loader-one-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.qapl-loader-dot{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:1rem auto 1rem}.qapl-loader-dot .dot{width:15px;height:15px;background:#fff;border-radius:50%;margin:5px;-webkit-animation:dotPulse 1.2s infinite ease-in-out both;animation:dotPulse 1.2s infinite ease-in-out both}.qapl-loader-dot.dark-loader .dot{background:rgba(0,0,0,.6)}.qapl-loader-dot .dot:nth-child(1){-webkit-animation-delay:-.24s;animation-delay:-.24s}.qapl-loader-dot .dot:nth-child(2){-webkit-animation-delay:-.12s;animation-delay:-.12s}.qapl-loader-dot .dot:nth-child(3){-webkit-animation-delay:0;animation-delay:0}@-webkit-keyframes dotPulse{0%,100%{-webkit-transform:scale(.8);transform:scale(.8);opacity:.7}50%{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes dotPulse{0%,100%{-webkit-transform:scale(.8);transform:scale(.8);opacity:.7}50%{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.qapl-loader-wave{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:1rem auto 1rem}.qapl-loader-wave .wave{width:5px;height:30px;background:rgba(255,255,255,.1);margin:0 2px;-webkit-animation:wave 1.2s infinite ease-in-out;animation:wave 1.2s infinite ease-in-out}.qapl-loader-wave.dark-loader .wave{background:rgba(0,0,0,.1);-webkit-animation:wave-dark 1.2s infinite ease-in-out;animation:wave-dark 1.2s infinite ease-in-out}.qapl-loader-wave .wave:nth-child(1){-webkit-animation-delay:-1.1s;animation-delay:-1.1s}.qapl-loader-wave .wave:nth-child(2){-webkit-animation-delay:-1s;animation-delay:-1s}.qapl-loader-wave .wave:nth-child(3){-webkit-animation-delay:-.9s;animation-delay:-.9s}.qapl-loader-wave .wave:nth-child(4){-webkit-animation-delay:-.8s;animation-delay:-.8s}.qapl-loader-wave .wave:nth-child(5){-webkit-animation-delay:-.7s;animation-delay:-.7s}@-webkit-keyframes wave{0%,100%,40%{-webkit-transform:scaleY(.4);transform:scaleY(.4)}20%{-webkit-transform:scaleY(1);transform:scaleY(1);background:#fff}}@keyframes wave{0%,100%,40%{-webkit-transform:scaleY(.4);transform:scaleY(.4)}20%{-webkit-transform:scaleY(1);transform:scaleY(1);background:#fff}}@-webkit-keyframes wave-dark{0%,100%,40%{-webkit-transform:scaleY(.4);transform:scaleY(.4)}20%{-webkit-transform:scaleY(1);transform:scaleY(1);background:rgba(0,0,0,.6)}}@keyframes wave-dark{0%,100%,40%{-webkit-transform:scaleY(.4);transform:scaleY(.4)}20%{-webkit-transform:scaleY(1);transform:scaleY(1);background:rgba(0,0,0,.6)}}@-webkit-keyframes qapl-fade-in{from{opacity:0}to{opacity:1}}@keyframes qapl-fade-in{from{opacity:0}to{opacity:1}}.quick-ajax-posts-container .qapl-post-item.qapl-post-item-bg-img{position:relative;overflow:hidden;color:#fff}.quick-ajax-posts-container .qapl-post-item.qapl-post-item-bg-img a{text-decoration:none}.quick-ajax-posts-container .qapl-post-item.qapl-post-item-bg-img .qapl-post-image{position:absolute;top:0;left:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;border-radius:4px;-o-object-position:center;object-position:center;object-fit:cover;z-index:1}.quick-ajax-posts-container .qapl-post-item.qapl-post-item-bg-img .qapl-no-image{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.6);border-radius:4px;z-index:0}.quick-ajax-posts-container .qapl-post-item.qapl-post-item-bg-img .post-content{position:relative;z-index:2;background-color:rgba(0,0,0,.6);padding:20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;overflow:hidden}.quick-ajax-posts-container .qapl-post-item.qapl-post-item-bg-img .post-content::before{content:'';position:absolute;top:0;left:-200%;width:200%;height:100%;background:linear-gradient(45deg,rgba(0,0,0,.9) 0,rgba(0,0,0,.1) 65%,rgba(0,0,0,0) 70%,rgba(0,0,0,0) 100%);opacity:0;z-index:-1;border-top-left-radius:4px;border-top-right-radius:4px;-webkit-transition:all .6s ease;transition:all .6s ease}.quick-ajax-posts-container .qapl-post-item.qapl-post-item-bg-img a:hover>.post-content::before{left:0;opacity:1;-webkit-transition:all .6s ease;transition:all .6s ease}.quick-ajax-posts-container .qapl-post-item.qapl-post-item-bg-img .qapl-post-date{position:relative;background:0 0;line-height:1;margin-bottom:20px;font-size:14px;font-weight:600}.quick-ajax-posts-container .qapl-post-item.qapl-post-item-bg-img .qapl-post-date span{padding:0;margin-bottom:.5rem;color:#fff;text-decoration:none}.quick-ajax-posts-container .qapl-post-item.qapl-post-item-bg-img .qapl-post-title{padding-top:3rem;margin-top:auto}.quick-ajax-posts-container .qapl-post-item.qapl-post-item-bg-img .qapl-post-title,.quick-ajax-posts-container .qapl-post-item.qapl-post-item-bg-img .qapl-post-title *{color:#fff;text-decoration:none}.quick-ajax-posts-container .qapl-post-item.qapl-post-item-bg-img .qapl-post-description,.quick-ajax-posts-container .qapl-post-item.qapl-post-item-bg-img .qapl-post-description *{color:#fff;text-decoration:none}.quick-ajax-posts-container .qapl-post-item.qapl-post-item-bg-img .qapl-read-more{text-align:right;font-weight:600;color:#fff;text-decoration:none;background:rgba(0,0,0,.4);display:inline-block;margin-top:1rem;margin-left:auto;margin-bottom:0;padding:6px 20px 8px;text-transform:uppercase;border-radius:7px;line-height:1;opacity:0;-webkit-transition:all .6s ease;transition:all .6s ease}.quick-ajax-posts-container .qapl-post-item.qapl-post-item-bg-img .qapl-read-more p{margin-bottom:0}.quick-ajax-posts-container .qapl-post-item.qapl-post-item-bg-img a:hover .qapl-read-more{opacity:1;background:rgba(0,0,0,.6);-webkit-transition:all .6s ease;transition:all .6s ease}
     1.quick-ajax-filter-container.quick-ajax-theme{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:10px;margin-bottom:2rem;text-align:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.quick-ajax-filter-container.quick-ajax-theme button.qapl-button,.quick-ajax-sort-options-container.quick-ajax-theme select{padding:10px 20px;font-size:16px;line-height:1;border:2px solid #1e1e1e;background-color:#1e1e1e;color:#fff;-webkit-box-shadow:0 0 22px rgba(0,0,0,.2);box-shadow:0 0 22px rgba(0,0,0,.2);border-radius:21px;outline:unset;-webkit-transition:all .3s ease;transition:all .3s ease}.quick-ajax-filter-container.quick-ajax-theme button.qapl-button:focus{outline:0;text-decoration:none;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}.quick-ajax-filter-container.quick-ajax-theme button.qapl-button.active,.quick-ajax-filter-container.quick-ajax-theme button.qapl-button:hover{border:2px solid #1e1e1e;background-color:transparent;color:#1e1e1e;-webkit-box-shadow:0 0 14px rgba(0,0,0,.5);box-shadow:0 0 14px rgba(0,0,0,.5);-webkit-transition:all .3s ease;transition:all .3s ease}.quick-ajax-controls-container{display:-webkit-box;display:-ms-flexbox;display:flex;gap:10px}.quick-ajax-controls-container .quick-ajax-filter-container{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.quick-ajax-controls-container .quick-ajax-sort-options-container{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.quick-ajax-controls-container .quick-ajax-filter-container.quick-ajax-theme{text-align:left;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:start}.quick-ajax-sort-options-container.quick-ajax-theme{margin-left:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.quick-ajax-sort-options-container.quick-ajax-theme .quick-ajax-sort-option-wrapper{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;position:relative}.quick-ajax-sort-options-container.quick-ajax-theme select{background-color:#1e1e1e;background-image:url('data:image/svg+xml;charset=US-ASCII,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 4 5"><path fill="%23ffffff" d="M2 5L0 3h4z"/></svg>');background-repeat:no-repeat;background-position:calc(100% - 20px) 8px;background-size:10px;padding:5px 40px 5px 20px;min-height:40px;font-weight:500;text-align:center;outline:0;cursor:pointer;position:relative;-webkit-appearance:none;-moz-appearance:none;appearance:none}.quick-ajax-sort-options-container.quick-ajax-theme .quick-ajax-sort-option-wrapper select:hover,.quick-ajax-sort-options-container.quick-ajax-theme .quick-ajax-sort-option-wrapper:hover select{background-color:transparent;background-image:url('data:image/svg+xml;charset=US-ASCII,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 4 5"><path fill="%231e1e1e" d="M2 5L0 3h4z"/></svg>');background-repeat:no-repeat;background-position:calc(100% - 20px) 8px;background-size:10px;border:2px solid #1e1e1e;color:#1e1e1e;-webkit-box-shadow:0 0 14px rgba(0,0,0,.5);box-shadow:0 0 14px rgba(0,0,0,.5);-webkit-transition:background-color .3s ease;transition:background-color .3s ease}.quick-ajax-sort-options-container.quick-ajax-theme .quick-ajax-sort-option-wrapper select:focus{background-color:transparent;background-image:url('data:image/svg+xml;charset=US-ASCII,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 4 5"><path fill="%231e1e1e" d="M2 0L0 2h4z"/></svg>');background-repeat:no-repeat;background-position:calc(100% - 20px) 16px;background-size:10px;color:#1e1e1e;-webkit-transition:all .3s ease;transition:all .3s ease}.quick-ajax-sort-options-container.quick-ajax-theme .quick-ajax-sort-option-wrapper select option{background-color:#fff;color:#1e1e1e;font-weight:500;padding:10px;text-align:center}.quick-ajax-posts-container.quick-ajax-theme .quick-ajax-posts-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;width:calc(100% + 2rem);margin-left:-1rem}.quick-ajax-posts-container.quick-ajax-theme .qapl-no-posts-found{display:block;width:100%;text-align:center}.quick-ajax-posts-container.quick-ajax-theme .quick-ajax-end-message-container{display:block;width:100%;text-align:center;opacity:0;-webkit-animation:qapl-fade-in .3s ease forwards;animation:qapl-fade-in .3s ease forwards;-webkit-animation-delay:.5s;animation-delay:.5s}.quick-ajax-posts-container.quick-ajax-theme .qapl-load-more-button{display:block;width:auto;margin:0 auto}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;width:100%;padding:1rem;-webkit-box-sizing:border-box;box-sizing:border-box}.quick-ajax-posts-container.quick-ajax-theme .col-qty-2 .qapl-post-item{width:calc(100% / 2)}.quick-ajax-posts-container.quick-ajax-theme .col-qty-3 .qapl-post-item{width:calc(100% / 3)}.quick-ajax-posts-container.quick-ajax-theme .col-qty-4 .qapl-post-item{width:calc(100% / 4)}.quick-ajax-posts-container.quick-ajax-theme .col-qty-5 .qapl-post-item{width:calc(100% / 5)}.quick-ajax-posts-container.quick-ajax-theme .col-qty-6 .qapl-post-item{width:calc(100% / 6)}.quick-ajax-posts-container.quick-ajax-theme .col-qty-7 .qapl-post-item{width:calc(100% / 7)}.quick-ajax-posts-container.quick-ajax-theme .col-qty-8 .qapl-post-item{width:calc(100% / 8)}.quick-ajax-posts-container.quick-ajax-theme .col-qty-9 .qapl-post-item{width:calc(100% / 9)}.quick-ajax-posts-container.quick-ajax-theme .col-qty-10 .qapl-post-item{width:calc(100% / 10)}.quick-ajax-posts-container.quick-ajax-theme .col-qty-11 .qapl-post-item{width:calc(100% / 11)}.quick-ajax-posts-container.quick-ajax-theme .col-qty-12 .qapl-post-item{width:calc(100% / 12)}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item a:focus{outline:0;text-decoration:none;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item a>div{position:relative;display:block;width:100%}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item a{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;width:100%}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item.qapl-post-item-default a{background-color:#fff;-webkit-box-shadow:0 0 10px rgba(0,0,0,.2);box-shadow:0 0 10px rgba(0,0,0,.2);text-decoration:none;border-radius:6px;text-decoration:none;-webkit-transition:all .3s ease;transition:all .3s ease}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item.qapl-post-item-default a:focus img{outline:0}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item.qapl-post-item-default a:hover{-webkit-box-shadow:0 0 10px rgba(0,0,0,.5);box-shadow:0 0 10px rgba(0,0,0,.5);-webkit-transition:all .3s ease;transition:all .3s ease}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item.qapl-post-item-default a>div{opacity:1;-webkit-transition:all .3s ease;transition:all .3s ease}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item.qapl-post-item-default a:hover>div{opacity:.8;-webkit-transition:all .3s ease;transition:all .3s ease}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item.qapl-post-item-default .qapl-post-image{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item.qapl-post-item-default .qapl-post-image img{width:100%;max-width:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center;border-top-right-radius:6px;border-top-left-radius:6px}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item.qapl-post-item-default .qapl-post-date{position:absolute;top:1rem;left:1rem;z-index:1;background-color:rgba(255,255,255,.6);display:-webkit-box;display:-ms-flexbox;display:flex;width:auto;border-radius:6px}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item.qapl-post-item-default .qapl-post-date span{line-height:1;padding:.5rem;font-size:14px;font-weight:700;color:#1e1e1e}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item.qapl-post-item-default .qapl-post-title{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;padding:.5rem 1rem 1rem}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item.qapl-post-item-default .qapl-post-title,.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item.qapl-post-item-default .qapl-post-title>*{color:#1e1e1e}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item.qapl-post-item-default .qapl-no-image+.qapl-post-title{margin-top:3rem}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item.qapl-post-item-default .qapl-post-description{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3;padding:0 1rem 1rem}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item.qapl-post-item-default .qapl-post-description,.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item.qapl-post-item-default .qapl-post-description *{color:#1e1e1e}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item.qapl-post-item-default .qapl-read-more{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4;text-align:right;padding:0 1rem 1rem;color:#1e1e1e;margin-top:auto}.quick-ajax-posts-container.quick-ajax-theme .qapl-post-item.qapl-post-item-default .qapl-read-more p{margin-bottom:0}.quick-ajax-posts-container.quick-ajax-theme.loading{margin-bottom:0}.quick-ajax-posts-container.quick-ajax-theme .quick-ajax-load-more-container{display:block;width:100%;opacity:1}.quick-ajax-posts-container.quick-ajax-theme.loading .quick-ajax-load-more-container{display:none;opacity:0}.quick-ajax-posts-container.quick-ajax-theme .quick-ajax-load-more-container .qapl-load-more-wrapper{margin-top:1rem}.quick-ajax-posts-container.quick-ajax-theme .qapl-load-more-button{display:block;width:auto;margin:0 auto}.quick-ajax-posts-container.quick-ajax-theme .quick-ajax-load-more-container .qapl-load-more-button{display:block;padding:10px 20px;font-size:18px;line-height:1;border:2px solid #1e1e1e;background-color:#1e1e1e;color:#fff;-webkit-box-shadow:0 0 22px rgba(0,0,0,.2);box-shadow:0 0 22px rgba(0,0,0,.2);border-radius:21px;outline:unset;-webkit-transition:all .3s;transition:all .3s}.quick-ajax-posts-container.quick-ajax-theme .quick-ajax-load-more-container .qapl-load-more-button:hover{border:2px solid #1e1e1e;background-color:transparent;color:#1e1e1e;-webkit-box-shadow:0 0 14px rgba(0,0,0,.5);box-shadow:0 0 14px rgba(0,0,0,.5);-webkit-transition:all .3s ease;transition:all .3s ease}.quick-ajax-posts-container .quick-ajax-load-more-container.infinite-scroll{visibility:hidden}.quick-ajax-posts-container .quick-ajax-loader-container{visibility:hidden;opacity:0;height:0;-webkit-transition:opacity .1s ease;transition:opacity .1s ease}.quick-ajax-posts-container.loading .quick-ajax-loader-container{visibility:visible;opacity:1;height:auto;-webkit-transition:opacity .3s ease;transition:opacity .3s ease}.quick-ajax-posts-container.quick-ajax-theme .quick-ajax-loader-container{display:-webkit-box;display:-ms-flexbox;display:flex;margin:0 auto 0}.quick-ajax-posts-container.quick-ajax-theme.loading .quick-ajax-loader-container{display:-webkit-box;display:-ms-flexbox;display:flex;min-height:42px;height:auto}.qapl-loader-default{border:8px solid #ebeaea;border-top:8px solid #fff;border-radius:50%;width:60px;height:60px;margin:1rem auto 1rem;-webkit-animation:loader-one-spin 2s linear infinite;animation:loader-one-spin 2s linear infinite}.qapl-loader-default.dark-loader{border:8px solid rgba(0,0,0,.3);border-top:8px solid rgba(0,0,0,.6)}@-webkit-keyframes loader-one-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loader-one-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.qapl-loader-dot{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:1rem auto 1rem}.qapl-loader-dot .dot{width:15px;height:15px;background:#fff;border-radius:50%;margin:5px;-webkit-animation:dotPulse 1.2s infinite ease-in-out both;animation:dotPulse 1.2s infinite ease-in-out both}.qapl-loader-dot.dark-loader .dot{background:rgba(0,0,0,.6)}.qapl-loader-dot .dot:nth-child(1){-webkit-animation-delay:-.24s;animation-delay:-.24s}.qapl-loader-dot .dot:nth-child(2){-webkit-animation-delay:-.12s;animation-delay:-.12s}.qapl-loader-dot .dot:nth-child(3){-webkit-animation-delay:0;animation-delay:0}@-webkit-keyframes dotPulse{0%,100%{-webkit-transform:scale(.8);transform:scale(.8);opacity:.7}50%{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes dotPulse{0%,100%{-webkit-transform:scale(.8);transform:scale(.8);opacity:.7}50%{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.qapl-loader-wave{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:1rem auto 1rem}.qapl-loader-wave .wave{width:5px;height:30px;background:rgba(255,255,255,.1);margin:0 2px;-webkit-animation:wave 1.2s infinite ease-in-out;animation:wave 1.2s infinite ease-in-out}.qapl-loader-wave.dark-loader .wave{background:rgba(0,0,0,.1);-webkit-animation:wave-dark 1.2s infinite ease-in-out;animation:wave-dark 1.2s infinite ease-in-out}.qapl-loader-wave .wave:nth-child(1){-webkit-animation-delay:-1.1s;animation-delay:-1.1s}.qapl-loader-wave .wave:nth-child(2){-webkit-animation-delay:-1s;animation-delay:-1s}.qapl-loader-wave .wave:nth-child(3){-webkit-animation-delay:-.9s;animation-delay:-.9s}.qapl-loader-wave .wave:nth-child(4){-webkit-animation-delay:-.8s;animation-delay:-.8s}.qapl-loader-wave .wave:nth-child(5){-webkit-animation-delay:-.7s;animation-delay:-.7s}@-webkit-keyframes wave{0%,100%,40%{-webkit-transform:scaleY(.4);transform:scaleY(.4)}20%{-webkit-transform:scaleY(1);transform:scaleY(1);background:#fff}}@keyframes wave{0%,100%,40%{-webkit-transform:scaleY(.4);transform:scaleY(.4)}20%{-webkit-transform:scaleY(1);transform:scaleY(1);background:#fff}}@-webkit-keyframes wave-dark{0%,100%,40%{-webkit-transform:scaleY(.4);transform:scaleY(.4)}20%{-webkit-transform:scaleY(1);transform:scaleY(1);background:rgba(0,0,0,.6)}}@keyframes wave-dark{0%,100%,40%{-webkit-transform:scaleY(.4);transform:scaleY(.4)}20%{-webkit-transform:scaleY(1);transform:scaleY(1);background:rgba(0,0,0,.6)}}@-webkit-keyframes qapl-fade-in{from{opacity:0}to{opacity:1}}@keyframes qapl-fade-in{from{opacity:0}to{opacity:1}}.quick-ajax-posts-container .qapl-post-item.qapl-post-item-bg-img{position:relative;overflow:hidden;color:#fff}.quick-ajax-posts-container .qapl-post-item.qapl-post-item-bg-img a{text-decoration:none}.quick-ajax-posts-container .qapl-post-item.qapl-post-item-bg-img .qapl-post-image{position:absolute;top:0;left:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;border-radius:4px;-o-object-position:center;object-position:center;object-fit:cover;z-index:1}.quick-ajax-posts-container .qapl-post-item.qapl-post-item-bg-img .qapl-no-image{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.6);border-radius:4px;z-index:0}.quick-ajax-posts-container .qapl-post-item.qapl-post-item-bg-img .post-content{position:relative;z-index:2;background-color:rgba(0,0,0,.6);padding:20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;overflow:hidden}.quick-ajax-posts-container .qapl-post-item.qapl-post-item-bg-img .post-content::before{content:'';position:absolute;top:0;left:-200%;width:200%;height:100%;background:linear-gradient(45deg,rgba(0,0,0,.9) 0,rgba(0,0,0,.1) 65%,rgba(0,0,0,0) 70%,rgba(0,0,0,0) 100%);opacity:0;z-index:-1;border-top-left-radius:4px;border-top-right-radius:4px;-webkit-transition:all .6s ease;transition:all .6s ease}.quick-ajax-posts-container .qapl-post-item.qapl-post-item-bg-img a:hover>.post-content::before{left:0;opacity:1;-webkit-transition:all .6s ease;transition:all .6s ease}.quick-ajax-posts-container .qapl-post-item.qapl-post-item-bg-img .qapl-post-date{position:relative;background:0 0;line-height:1;margin-bottom:20px;font-size:14px;font-weight:600}.quick-ajax-posts-container .qapl-post-item.qapl-post-item-bg-img .qapl-post-date span{padding:0;margin-bottom:.5rem;color:#fff;text-decoration:none}.quick-ajax-posts-container .qapl-post-item.qapl-post-item-bg-img .qapl-post-title{padding-top:3rem;margin-top:auto}.quick-ajax-posts-container .qapl-post-item.qapl-post-item-bg-img .qapl-post-title,.quick-ajax-posts-container .qapl-post-item.qapl-post-item-bg-img .qapl-post-title *{color:#fff;text-decoration:none}.quick-ajax-posts-container .qapl-post-item.qapl-post-item-bg-img .qapl-post-description,.quick-ajax-posts-container .qapl-post-item.qapl-post-item-bg-img .qapl-post-description *{color:#fff;text-decoration:none}.quick-ajax-posts-container .qapl-post-item.qapl-post-item-bg-img .qapl-read-more{text-align:right;font-weight:600;color:#fff;text-decoration:none;background:rgba(0,0,0,.4);display:inline-block;margin-top:1rem;margin-left:auto;margin-bottom:0;padding:6px 20px 8px;text-transform:uppercase;border-radius:7px;line-height:1;opacity:0;-webkit-transition:all .6s ease;transition:all .6s ease}.quick-ajax-posts-container .qapl-post-item.qapl-post-item-bg-img .qapl-read-more p{margin-bottom:0}.quick-ajax-posts-container .qapl-post-item.qapl-post-item-bg-img a:hover .qapl-read-more{opacity:1;background:rgba(0,0,0,.6);-webkit-transition:all .6s ease;transition:all .6s ease}
  • quick-ajax-post-loader/trunk/inc/actions.php

    r3287563 r3290862  
    162162        'hide_empty' => false,
    163163    ]);
    164     /*
     164    //get checked terms if saved in post_meta
    165165    $post_id = isset($_POST['post_id']) ? intval($_POST['post_id']) : 0;
    166     $saved_terms = [];   
     166    $saved_terms = [];
    167167    if ($post_id > 0) {
     168        // get saved terms from post meta
    168169        $post_meta = get_post_meta($post_id, QAPL_Quick_Ajax_Helper::quick_ajax_shortcode_settings(), true);
    169170        $post_meta_values = maybe_unserialize($post_meta);
     171        // if terms exist in post meta
    170172        if (is_array($post_meta_values) && isset($post_meta_values['qapl_manual_selected_terms'])) {
    171173            $saved_terms = array_map('intval', (array) $post_meta_values['qapl_manual_selected_terms']);
    172174        }
    173175    }
    174     //$checked = in_array($term->term_id, $saved_terms) ? 'checked' : '';
    175    
    176     */
    177176    ob_start();
    178177    if (!empty($terms) && !is_wp_error($terms)) {
     
    181180            <div class="quick-ajax-multiselect-option">
    182181                <label>
    183                     <input type="checkbox" name="qapl_manual_selected_terms[]" value="<?php echo esc_attr($term->term_id); ?>">
     182                    <?php
     183                    //check if term is selected in post meta
     184                    $checked = in_array($term->term_id, $saved_terms) ? 'checked' : '';
     185                    ?>
     186                    <input type="checkbox" name="qapl_manual_selected_terms[]" value="<?php echo esc_attr($term->term_id); ?>" <?php echo $checked; ?>>
    184187                    <?php echo esc_html($term->name); ?>
    185188                </label>
  • quick-ajax-post-loader/trunk/inc/class-ajax.php

    r3287563 r3290862  
    99        private $helper;
    1010        private $input_args = [];
    11         private $selected_terms = [];
     11        private $action_args = [];
    1212        public $args = [];
    13         public $load_more_args = [];
    1413        public $attributes = [];
    1514        public $layout = [];
     
    6059            return $this->quick_ajax_id;
    6160        }
    62 
    63         private function create_post_not_in($excluded_post_ids){
    64             $post__not_in = [];
    65             $array_ids = is_array($excluded_post_ids) ? $excluded_post_ids : preg_split('/[,\s]+/', $excluded_post_ids);
    66            
    67             foreach ($array_ids as $post_id) {
    68                 $int_post_id = intval($post_id);
    69                 //Check if the value is greater than 0 and not already in the array
    70                 if ($int_post_id > 0 && !in_array($int_post_id, $post__not_in, true)) {
    71                     $post__not_in[] = $int_post_id;
    72                 }
    73             }
    74             return $post__not_in;                     
    75         }
     61       
    7662        /*
    7763        public function filter_modify_query_args($args, $quick_ajax_id) {
     
    115101        }
    116102        */
     103        private function sanitize_to_int_array($value) {
     104            // if it's a string (e.g. "1,2,3"), split it by comma or whitespace
     105            if (!is_array($value)) {
     106                $value = preg_split('/[,\s]+/', $value);
     107            }       
     108            // normalize and sanitize all values
     109            $value = array_map('absint', $value);       
     110            // remove empty values (0s, nulls, etc.)
     111            $value = array_filter($value, function($id) {
     112                return $id > 0;
     113            });       
     114            // remove duplicates
     115            $int_array = array_values(array_unique($value));       
     116            return $int_array;
     117        }
     118        private function normalize_args($args) {
     119            // convert comma-separated string to array of integers
     120            if (isset($args['post__not_in'])) {
     121                $args['post__not_in'] = $this->sanitize_to_int_array($args['post__not_in']);
     122            }       
     123            if (isset($args['selected_terms'])) {
     124                $args['selected_terms'] = $this->sanitize_to_int_array($args['selected_terms']);
     125            }
     126            return $args;
     127        }
    117128        public function wp_query_args($args, $attributes = false){
    118129            $this->args = [];
    119130            $this->generate_block_id($attributes);
    120             $this->input_args = $args;
    121             $quick_ajax_args = $this->initialize_query_args($args);
     131
     132             //normalize input args (sanitize selected_terms, post__not_in, etc.)
     133            $this->input_args = $this->normalize_args($args);
     134            $this->action_args = $this->input_args;
     135           
     136            // generate query args (post_type, tax_query, etc.)
     137            $quick_ajax_args = $this->initialize_query_args($this->input_args);
     138
    122139            $this->args['post_status'] = $this->helper->shortcode_page_select_post_status_default_value();
     140
    123141            if (isset($quick_ajax_args['post_type']) && !empty($quick_ajax_args['post_type'])) {
    124142                foreach ($quick_ajax_args as $key => $value) {
     
    128146                }
    129147            }
     148            /* not in use yet
    130149            if(isset($args['tax_query']) && !empty($args['tax_query'])){
    131150                $this->args['tax_query'] = $args['tax_query'];
    132151            }
     152            */
    133153           
    134154            $this->args = apply_filters(QAPL_Hooks::HOOK_MODIFY_POSTS_QUERY_ARGS, $this->args, $this->quick_ajax_id);
     
    145165            $query_args = $this->query_args_add_tax_query($query_args, $args);           
    146166            $query_args = $this->query_args_apply_offset_or_paged($query_args, $args);
    147             $this->get_selected_terms($args);
    148167            return $query_args;   
    149168        }
     
    154173                'orderby' => isset($args['orderby']) ? sanitize_text_field($args['orderby']) : $this->helper->shortcode_page_select_orderby_default_value(),
    155174                'order' => isset($args['order']) ? sanitize_text_field($args['order']) : $this->helper->shortcode_page_select_order_default_value(),
    156                 'post__not_in' => isset($args['post__not_in']) ? array_map('absint', $this->create_post_not_in($args['post__not_in'])) : '',
     175                'post__not_in' => $args['post__not_in'] ?? [],
    157176                'ignore_sticky_posts' => isset($args['ignore_sticky_posts']) ? intval($args['ignore_sticky_posts']) : $this->helper->shortcode_page_ignore_sticky_posts_default_value(),
    158177                'paged' => isset($args['paged']) ? intval($args['paged']) : 1,
     
    170189        private function query_args_add_tax_query($query_args, $args) {
    171190            $taxonomy = isset($args['selected_taxonomy']) ? sanitize_text_field($args['selected_taxonomy']) : '';
    172             $terms = isset($args['selected_terms']) && is_array($args['selected_terms']) ? array_map('absint', $args['selected_terms']) : [];
     191            $terms = isset($args['selected_terms']) ? $args['selected_terms'] : [];
    173192       
    174193            if ($taxonomy && !empty($terms)) {
     
    186205            }       
    187206            return $query_args;
    188         }
    189         private function get_selected_terms($args) {
    190             $taxonomy = isset($args['selected_taxonomy']) ? sanitize_text_field($args['selected_taxonomy']) : '';
    191             $terms = isset($args['selected_terms']) && is_array($args['selected_terms']) ? array_map('absint', $args['selected_terms']) : [];       
    192             if ($taxonomy && !empty($terms)) {
    193                 $this->selected_terms = $terms;
    194             }       
    195207        }
    196208
     
    243255            return false;     
    244256        }
    245         public function render_taxonomy_terms_filter($taxonomy){
     257        public function render_taxonomy_terms_filter($taxonomy = false){
    246258            if(!$this->args){
    247259                return false;
     260            }
     261            if(!$taxonomy){
     262                $taxonomy = $this->input_args['selected_taxonomy'];
    248263            }
    249264
     
    254269            );           
    255270            // only include specific terms if selected_terms is not empty
    256             if (!empty($this->selected_terms) && is_array($this->selected_terms)) {
    257                 $terms_args['include'] = $this->selected_terms;
     271            if (!empty($this->input_args['selected_terms']) && is_array($this->input_args['selected_terms'])) {
     272                $terms_args['include'] = $this->input_args['selected_terms'];
    258273            }           
    259274            $terms = get_terms($terms_args);           
     
    290305                    'button_label' => $show_all_label,
    291306                    'data-button' => $button_base['data-button'],
    292                     'data-action' => $this->input_args,
     307                    'data-action' => $this->action_args,
    293308                    'data-attributes' => $button_base['data-attributes'],
    294309                ];
     
    298313                    $not_empty = $this->get_post_assigned_to_the_term($term, $this->args['post_type'], $exclude_ids);
    299314                    if($not_empty == true){
    300                         $data_action = $this->input_args;
     315                        $data_action = $this->action_args;
    301316                        $data_action['selected_terms'] = [$term->term_id];
    302317                        $term_button_data = [                       
     
    395410            }
    396411            $sort_option .= '</select>';
    397             $sort_option .= '<span class="quick-ajax-settings" data-button="'.$this->helper->sort_option_button_data_button().'" data-attributes="' . esc_attr(wp_json_encode($this->attributes)) . '" data-action="' . esc_attr(wp_json_encode($this->input_args)) . '"></span>';
     412            $sort_option .= '<span class="quick-ajax-settings" data-button="'.$this->helper->sort_option_button_data_button().'" data-attributes="' . esc_attr(wp_json_encode($this->attributes)) . '" data-action="' . esc_attr(wp_json_encode($this->action_args)) . '"></span>';
    398413            $sort_option .= '</div>';                     
    399414            return $sort_option;
     
    647662            //echo 'paged:'.$paged.'<br />$max_num_pages:'.$max_num_pages.'<br />$found_posts:'.$found_posts.'<br />';
    648663            //print_r($this->args);
    649 
     664            $load_more_args = $this->action_args;
     665            $load_more_args['paged'] = isset($this->args['paged']) ? intval($this->args['paged']) : 1;
    650666            if (isset($this->attributes[$this->helper->layout_load_more_posts()]) && !empty($this->attributes[$this->helper->layout_load_more_posts()])) {
    651667            // Check if load_more_posts attribute is set
     
    653669            // use 'offset' not 'paged'
    654670                $load_more_posts = intval($this->attributes[$this->helper->layout_load_more_posts()]);
    655                 $offset = isset($this->args['offset']) ? $this->args['offset'] + $load_more_posts : + $load_more_posts;
     671                $offset = isset($load_more_args['offset']) ? $load_more_args['offset'] + $load_more_posts : + $load_more_posts;
    656672               
    657                 if (($found_posts <= $offset) || ($found_posts <= intval($this->args['posts_per_page']))) {
     673                if (($found_posts <= $offset) || ($found_posts <= intval($load_more_args['posts_per_page']))) {
    658674                    return false;
    659675                }
    660676                 // Update offset
    661                 $this->args['offset'] = isset($this->args['offset']) ? intval($this->args['offset']) + $load_more_posts : intval($this->args['posts_per_page']);
    662                 $this->args['posts_per_page'] = $load_more_posts;
     677                $load_more_args['offset'] = isset($load_more_args['offset']) ? intval($load_more_args['offset']) + $load_more_posts : intval($load_more_args['posts_per_page']);
     678                $load_more_args['posts_per_page'] = $load_more_posts;
    663679            } else {
    664680                // Check if there are no more pages to load
     
    666682                    return false;
    667683                }               
    668                 $this->args['paged'] += 1;
     684                $load_more_args['paged'] += 1;
    669685            }
    670686            $class = '';
     
    676692            $button_data['button_label'] = __('Load More', 'quick-ajax-post-loader');
    677693            $button_data['data-button'] = $this->helper->load_more_button_data_button();
    678             $button_data['data-action'] = $this->args;
     694            $button_data['data-action'] = $load_more_args;
    679695            $button_data['data-attributes'] = $this->attributes;
    680696            $load_more_button = '<div class="quick-ajax-load-more-container'.$class.'">';
     
    684700            //do_action(QAPL_Hooks::HOOK_LOAD_MORE_AFTER);
    685701        }
    686         public function render_end_of_posts_message($show_end_post_message = false, $load_more, $max_num_pages, $quick_ajax_id) {
     702        public function render_end_of_posts_message($load_more, $max_num_pages, $quick_ajax_id, $show_end_post_message = false) {
    687703            if(!$show_end_post_message){
    688704                return '';
  • quick-ajax-post-loader/trunk/inc/class-helper.php

    r3287563 r3290862  
    1515    public static function get_plugin_info() {
    1616        return [
    17             'version' => '1.7.0',
     17            'version' => '1.7.1',
    1818            'name' => 'Quick Ajax Post Loader',
    1919            'text_domain' => 'quick-ajax-post-loader',
  • quick-ajax-post-loader/trunk/inc/class-shortcode.php

    r3287563 r3290862  
    256256        private $shortcode_params = array();
    257257        private $shortcode_postmeta = array();
     258        private $query_args = array();
    258259       
    259260        private function get_shortcode_params($params) {
     
    321322            }
    322323            if(!empty($args)){
    323                 return $args;
     324                $this->query_args = $args;
    324325            }
    325326            return false;
    326327        }
     328        /*
     329        // replaced by args['selected_taxonomy'] - may be needed in the future if there is an option to hide the filter
    327330        private function create_shortcode_taxonomy(){
    328331            if (empty($this->shortcode_params['id'])) {
    329332                return null;
    330333            }
    331             //$postID = $this->shortcode_params['id'];
    332             //$selectedTaxonomy = get_post_meta($postID, 'quick_ajax_meta_box_select_taxonomy', true);
    333334            $show_taxonomies_filter = isset($this->shortcode_postmeta[QAPL_Quick_Ajax_Helper::shortcode_page_show_taxonomy_filter()]) ? $this->shortcode_postmeta[QAPL_Quick_Ajax_Helper::shortcode_page_show_taxonomy_filter()] : null;
    334335            if($show_taxonomies_filter==1){
     
    340341            }
    341342            return null;
    342         }
     343        }*/
    343344        private function create_shortcode_controls_container(){
    344345            if(!empty($this->shortcode_params['id'])){
     
    372373                $this->unserialize_shortcode_data($this->shortcode_params['id']);
    373374            }
    374             $query_args = $this->create_shortcode_args();
     375            $this->create_shortcode_args();
    375376            $attribute_provider = new QAPL_Shortcode_Ajax_Attributes_Provider($this->shortcode_params, $this->shortcode_postmeta);
    376377            $attributes = $attribute_provider->get_attributes();
    377             $render_context['taxonomy'] = $this->create_shortcode_taxonomy();
     378            //$render_context['show_taxonomy_filter'] = $this->create_shortcode_taxonomy();
     379            $render_context['show_taxonomy_filter'] = !empty($this->query_args['selected_taxonomy']);
    378380            $render_context['sort_options'] = $this->create_shortcode_sort_button();
    379381            $render_context['controls_container'] = $this->create_shortcode_controls_container();
    380382            ob_start();
    381             if (!empty($query_args) && function_exists('qapl_render_post_container')) {
    382                 qapl_render_post_container($query_args, $attributes, $render_context);
     383            if (!empty($this->query_args) && function_exists('qapl_render_post_container')) {
     384                qapl_render_post_container($this->query_args, $attributes, $render_context);
    383385            }
    384386            $output = ob_get_clean();
  • quick-ajax-post-loader/trunk/inc/functions.php

    r3287563 r3290862  
    2626        $output .= $ajax_class->render_sort_options($render_context['sort_options']);
    2727    }
    28     if (isset($render_context['taxonomy']) && !empty($render_context['taxonomy']) && is_string($render_context['taxonomy'])) {
    29         $output .= $ajax_class->render_taxonomy_terms_filter($render_context['taxonomy']);
     28    if (isset($render_context['show_taxonomy_filter']) && $render_context['show_taxonomy_filter'] && !empty($args['selected_taxonomy'])) {
     29        $output .= $ajax_class->render_taxonomy_terms_filter($args['selected_taxonomy']);
    3030    }
    3131    $output .= $filter_wrapper_end;
  • quick-ajax-post-loader/trunk/quick-ajax-post-loader.php

    r3287563 r3290862  
    55* Text Domain: quick-ajax-post-loader
    66* Domain Path: /languages
    7 * Version: 1.7.0
     7* Version: 1.7.1
    88* Description: Supercharge post loading with Quick Ajax Post Loader. Enhance user experience and optimize site performance using AJAX technology.
    99* Author: Pawel Grzelkowski
  • quick-ajax-post-loader/trunk/readme.txt

    r3287563 r3290862  
    55Requires at least: 5.6
    66Tested up to: 6.8
    7 Stable tag: 1.7.0
     7Stable tag: 1.7.1
    88Requires PHP: 7.4
    99License: GPLv2 or later
     
    106106== Changelog ==
    107107
     108= 1.7.1 - 2025-05-10 =
     109- Enhanced taxonomy filter in shortcode settings – saved terms are now automatically pre-selected when editing.
     110- The "Load More" button now passes only essential parameters, ensuring cleaner functionality.
     111- Improved compatibility with the latest PHP versions, ensuring smooth operation without deprecated warnings.
     112- Applied minor code optimizations for better performance.
     113
    108114= 1.7.0 - 2025-05-05 =
    109115- Added support for manually selecting specific taxonomy terms in the shortcode or PHP function settings.
Note: See TracChangeset for help on using the changeset viewer.