- Öt Starship után embereket küldene a Marsra Musk és a SpaceX
- Greenwashing miatt támadják az olaszok a Sheint
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Windows 10
- Gondoskodik róla az EU, hogy az Apple felnyissa a rendszereit
- Álláskeresés, interjú, önéletrajz
- Vodafone otthoni szolgáltatások (TV, internet, telefon)
- Elterelik a sofőrök figyelmét a vezetéstámogató rendszerek
- Disney+
- Ubiquiti hálózati eszközök
Új hozzászólás Aktív témák
-
cigam
félisten
Az in_array()-nak van vmi trükkje? Mert ez nem működik:
$categories = get_the_category();
if ( ! empty( $categories ) ) {
if (in_array('Blabla',$categories)) {
...
}
else {
...
}
}
Pedig a var_dump($categories); szerint van benne Blabla:
array(2) {
[0]=> object(WP_Term)#17210 (16) {
["term_id"]=> int(48)
["name"]=> string(6) "Teszt"
["slug"]=> string(5) "teszt"
["term_group"]=> int(0)
["term_taxonomy_id"]=> int(48)
["taxonomy"]=> string(8) "category"
["description"]=> string(1) "A"
["parent"]=> int(0)
["count"]=> int(11900)
["filter"]=> string(3) "raw"
["cat_ID"]=> int(48)
["category_count"]=> int(11900)
["category_description"]=> string(1) "A"
["cat_name"]=> string(6) "Teszt"
["category_nicename"]=> string(5) "teszt"
["category_parent"]=> int(0)
}
[1]=> object(WP_Term)#17465 (16) {
["term_id"]=> int(5906)
["name"]=> string(6) "Blabla"
["slug"]=> string(6) "blabla"
["term_group"]=> int(0)
["term_taxonomy_id"]=> int(5906)
["taxonomy"]=> string(8) "category"
["description"]=> string(0) ""
["parent"]=> int(0)
["count"]=> int(4)
["filter"]=> string(3) "raw"
["cat_ID"]=> int(5906)
["category_count"]=> int(4)
["category_description"]=> string(0) ""
["cat_name"]=> string(6) "Blabla"
["category_nicename"]=> string(6) "blabla"
["category_parent"]=> int(0)
}
}
Valamit rosszul csinálok, de mit?Freeware, és akciós programok egy helyen https://www.facebook.com/freewarenews
-
cigam
félisten
A Wordpress-hez faragok kódot, és a lekérdezésnél elakadtam:
$posts = get_posts(array(
'numberposts' => 8,
'post_type' => 'post',
'meta_key' => 'evfordulo',
'meta_value' => '20210506'));Ez kikeresi azt a 8 bejegyzést, aminek az évfordulója 20210506-ra van állítva.
- Be lehet állítani hogy az évszámtól függetlenül minden május 6-ra eső bejegyzést megkeressen? A '????0506' nem hozott eredményt.Ha nem talál 8 ilyen bejegyzést, akkor bővítse ki a keresést, pl. 20210505-től 20210507-ig, ha még mindég nincs meg a 8 találat, akkor 20210504-től 20210508-ig keressen,...
Ha elsőre jóval több a találatok száma mint 8, akkor véletlenszerűen válasszon belőlük.
[ Szerkesztve ]
Freeware, és akciós programok egy helyen https://www.facebook.com/freewarenews
-
cigam
félisten
válasz FeniX- #21253 üzenetére
Köszi!
Közben lett egy fura problémám:
$posts = get_posts(
array(
'numberposts' => 8,
'post_type' => 'post',
/* +-31 nap tűréssel gyűjti ki az évfordulókat */
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'evfordulo',
'compare' => '>=',
'value' => '19860913'
//'value' => '[0-9]{4}'.date('md',strtotime("-31 days"))
),
array(
'key' => 'evfordulo',
'compare' => '<=',
'value' => '19861114'
//'value' => '[0-9]{4}'.date('md'.strtotime("+31 days"))
),
),
)
Ha konkrét értéket írok be, akkor működik, ha regex-el kimaszkozom az évszámot, akkor nem működik a lekérdezés.
Miért?[ Szerkesztve ]
Freeware, és akciós programok egy helyen https://www.facebook.com/freewarenews
-
cigam
félisten
válasz nevemfel #21255 üzenetére
Köszi a tippet! Sajna sem a regexp, se a * nem jött be.
'value' => '[0-9]{4}1021',
'compare' => 'LIKE'
'value' => '*1021',
'compare' => 'LIKE'
viszont a
'value' => '20221021',
'compare' => 'LIKE'
ugyanúgy megtalálja mint az '='
Működik a
'value' => '1021',
'compare' => 'LIKE'
is, de ez bárhol azonos egyenlőséget keres 2010210 ugyanaz mint a 20221021Freeware, és akciós programok egy helyen https://www.facebook.com/freewarenews
-
cigam
félisten
válasz nevemfel #21257 üzenetére
Köszi a tippeket! Igen, ezt az egyedi query-t én is láttam, de túl bonyolultnak tűnik. Egyáltalán nem értem (még?)a működését, és a próbálkozásaim sorra kudarcba fulladtak (a MariaDB szintaktikai hibára hivatkozva eldobta).
Viszont egy nem túl elegáns, de működő megoldást találtam:array(
'post_type' => 'post',
'posts_per_page' => 8,
'orderby' => 'post_date',
'order' => 'DESC',
'category' => 'current',
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'evfordulo',
'compare' => 'REGEXP',
'value' => '[0-9]{4}'.date('md',strtotime("-10 days"))
),
array(
'key' => 'evfordulo',
'compare' => 'REGEXP',
'value' => '[0-9]{4}'.date('md',strtotime("-9 days"))
),
array(
'key' => 'evfordulo',
'compare' => 'REGEXP',
'value' => '[0-9]{4}'.date('md',strtotime("-8 days"))
),
... és így tovább egészen a +10. napig.[ Szerkesztve ]
Freeware, és akciós programok egy helyen https://www.facebook.com/freewarenews
-
cigam
félisten
válasz nevemfel #21259 üzenetére
add_filter( 'posts_where', 'custom_posts_where', 10, 2 );
function custom_posts_where( $where, &$wp_query )
{
global $wpdb;
if ( $custom_post_meta_value = $wp_query->get( 'custom_value' ) ) {
$where .= ' AND ' . $wpdb->postmeta . '.meta_key = "evfordulo" AND ' . $wpdb->postmeta . '.meta_value LIKE \'' . esc_sql( like_escape( $custom_post_meta_value ) ) . '\'';
}
return $where;
}
$args = array(
'post_type' => 'post',
'meta_query' => array(
'relation'=> 'AND',
array(
'key' => 'evfordulo',
'compare' => 'LIKE',
// 'value' => date('md',strtotime("+10 days"))
'custom_value' => date('md',strtotime("+10 days"))
)
)
);
Azt érteni vélem, hogy ha a lekérdezésben találkozik egy "custom_value"-val, akkor azt beilleszti a lekérdezésbe. Ugyanakkor nem végez szűrést. Minden bejegyzést kilistáz.
Ha a custom value-t kikomentelem, akkor és élesítem a sima value-t, akkor máris szűkülnek a találatok, vagyis látszólag nem működik ez a funkció.[ Szerkesztve ]
Freeware, és akciós programok egy helyen https://www.facebook.com/freewarenews
-
cigam
félisten
Közben sikerült kisakkozni, hogyan kell közvetlenül kikérdezni:
$a = '1986'.date('md',strtotime('-10 days'));
$b = '1986'.date('md',strtotime('+10 days'));
global $wpdb;
$posts = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_type='post'
AND ID IN(
SELECT post_id FROM $wpdb->postmeta WHERE $wpdb->postmeta.meta_key='evfordulo'
AND $wpdb->postmeta.meta_value >= '$a'
AND $wpdb->postmeta.meta_value <= '$b'
) ORDER BY post_date DESC");
$i = 0;
echo '<br>';
while($i < count($posts)){
echo $posts[$i]->ID.'<br>';
echo $posts[$i]->post_title.'<br>';
$i++;
}
De hogyan tudom kimaszkozni az éveket? Az
a$ = '[0-9]{4}'.date('md',strtotime('-10 days'));
már nem működik.Freeware, és akciós programok egy helyen https://www.facebook.com/freewarenews
-
cigam
félisten
válasz FeniX- #21262 üzenetére
Köszi!
De pont nem a LIKE-ot szeretném, hanem egy konkrét tartományt lekérdezni.
A like azért nem a barátom, mert ott nem tudok intervallumot kezelni. Konkrétan a AND $wpdb->postmeta.meta_value LIKE '%1102' csak a mai napi évfordulókat keresi le. Hogyan lesz belőle +-1 hét?
Vagy még nem esett le, hogy azt hogyan kell. Hiszen a hónap elejét végét hogyan kezelem? Ugye a mai nap -1 hét az 1026 lesz.Az évszámtól függetlenül a (mai dátum -15 nap)-tól a (mai dátum +15napig)
AND $wpdb->postmeta.meta_value >= '[0-9]{4}'.date('md',strtotime('-15 days'));
AND $wpdb->postmeta.meta_value <= '[0-9]{4}'.date('md',strtotime('+15 days'));
Vagyis a regexp-ben azt próbálom leírni, hogy bármilyen évszámmal kezdődő dátum érdekel, de csak a megadott tartományon belül. De valamiért nem működik. Akkor sem, ha %1003 és %1202 közötti értékre keresek rá.
Vagy a lekérdezéskor külön jelezni kell valahaol, hogy regexp-es értékadást használok?
[ Szerkesztve ]
Freeware, és akciós programok egy helyen https://www.facebook.com/freewarenews
-
cigam
félisten
válasz nevemfel #21264 üzenetére
Köszi!
De pont ez a baj. A WP-t azóta n+1 alkalommal frissítették, és már nem működnek a régi módszerek. Az év elején még működött [link] Ezért is vergődök, mert sehogy sem sikerül az évszámot kimaszkolni.[ Szerkesztve ]
Freeware, és akciós programok egy helyen https://www.facebook.com/freewarenews
-
cigam
félisten
válasz FeniX- #21266 üzenetére
Meg lennék lepve, ugyanis ez a kód pár hónapja még működött:
/* +-10 nap tűréssel gyűjti ki az évfordulókat */
'meta_query' => array(
'relation' => 'AND',
'key' => 'evfordulo',
'value' => '[0-9]{4}'.date('md',strtotime("-10 days"))
),
array(
'key' => 'evfordulo',
'compare' => '<=',
'value' => '[0-9]{4}'.date('md',strtotime("+10 days"))
),
),Igaz WP-n belül get_posts fügvényel lekérdezve. Most meg nem ad vissza találatot.
Nem tudom hogy a PHP verzió, vagy WP verzió változása okozta-e de mindegy is. Most arra kéne rájönnöm hogy WP-n belül hogyan bírhatom működésre ezt a fajta lekérdezést, vagy közvetlen adatbázis lekérdezéssel ahogy az előbb próbáltam.Akkor csak az marad, hogy kiszámolok minden napot és egyesével felfűzöm a lekérdezésbe?
[ Szerkesztve ]
Freeware, és akciós programok egy helyen https://www.facebook.com/freewarenews
-
cigam
félisten
válasz FeniX- #21268 üzenetére
Köszi! Megpróbálom...
Panhard
Ez fura, mert nekem 300-at ad ki eredményül.$a = strtotime('2022-10-30 01:59:23' );
$b = strtotime('2022-10-30 02:04:23' );
echo $a."<br>";
echo $b."<br>";
echo $a-$b."<br>";
1667095163
1667095463
-300Pontosan hogyan néz ki az a függvény?
Freeware, és akciós programok egy helyen https://www.facebook.com/freewarenews
Új hozzászólás Aktív témák
- Milyen egeret válasszak?
- Nem lesznek kitömve VRAM-mal az új VGA-k a gyártók szerint
- Óra topik
- Asszociációs játék. :)
- Öt Starship után embereket küldene a Marsra Musk és a SpaceX
- Greenwashing miatt támadják az olaszok a Sheint
- Gumi és felni topik
- Kertészet, mezőgazdaság topik
- AMD CPU-k jövője - amit tudni vélünk
- Eredeti játékok OFF topik
- További aktív témák...
Állásajánlatok
Cég: Ozeki Kft
Város: Debrecen
Cég: Ozeki Kft
Város: Debrecen