Wordpress – Johan Hermansson https://johanhermansson.se Web developer who says random things Wed, 08 Mar 2023 22:38:08 +0000 sv-SE hourly 1 https://wordpress.org/?v=6.7.1 Delete orphan postmeta rows in WordPress https://johanhermansson.se/2020/08/delete-orphan-postmeta-rows-in-wordpress Tue, 18 Aug 2020 14:57:36 +0000 https://johanhermansson.se/?p=576 Running a WordPress site for a long time probably means you’ve tried out lots of different plugins handling your data. This usually means you have a lot orphans in your database. So very sad.

Delete orphan postmeta rows in Wordpress 1

Of course you want an orphan free database!

But you can easily clean up your database by running a few SQL queries.

First you should probably look if you have any orphan wp_postmeta rows in your database:

SELECT *
FROM wp_postmeta AS pm
LEFT JOIN wp_posts AS p ON p.ID = pm.post_id
WHERE p.ID IS NULL

Doing a LEFT JOIN means that SQL will look for posts, but still return a row if no parent post was found. And we only want to get post meta rows with no post parent; therefor we check where posts are NULL.

To be sure you won’t delete all your data, I strongly recommend to always backup your database and compare the row count from the above query with the total count of rows in your wp_postmeta table.

When you are sure, you can delete the rows with following query:

DELETE pm
FROM wp_postmeta AS pm
LEFT JOIN wp_posts AS p ON p.ID = pm.post_id
WHERE p.ID IS NULL

Happy orphan hunting!

Delete orphan postmeta rows in Wordpress 2
]]>
Get WordPress posts from all Polylang languages in your blog and post archives https://johanhermansson.se/2018/12/get-wordpress-posts-from-all-polylang-languages-in-your-blog-and-post-archives Thu, 06 Dec 2018 20:54:42 +0000 https://johanhermansson.se/?p=480 As usual – clients have different wishes and requests. Sometimes they’re reasonable, and sometimes they’re not.

This request was not unreasonable. In a country like Sweden, and especially in Stockholm, where many corporations and companies speak english – there are english-only speaking people.

Get Wordpress posts from all Polylang languages in your blog and post archives 3

Of course you want your Swedish speaking friends to not miss all of your content. They probably understand English – too ?. And others needs to see how an active blogger you are! 

Then you would like the possibility to show blog posts from all languages in your blog. A nice feature is also to show categories with posts from all languages.

I could not find any of these tricks while searching the web or fully described in the Polylang documentation. Maybe I searched with wrong phrases, but then again – someone else probably does too.

How to get posts from all languages in your blog

The lang parameter as described in the documentation needs to be set to empty string, but for some reason the tax_query gets set before the pre_get_posts filter. Nevermind. Just remove the language taxonomy from the query and you will be all set.

function awesome_theme_pre_get_posts( &$query ) {
	if ( ! function_exists( 'pll_the_languages' ) ) {
		return;
	}

	if ( $query->is_main_query() and ( is_home() or is_archive( 'post' ) ) ) {
		$query->set( 'lang', '' );

		if ( is_array( $query->get( 'tax_query' ) ) ) {
			$tax_query = $query->get( 'tax_query' );

			foreach ( $tax_query as $i => $row ) {
				if ( 'language' === $row['taxonomy'] ) {
					unset( $tax_query[ $i ] );
				}
			}

			$query->set( 'tax_query', $tax_query );
			$query = new WP_Query( $query->query_vars );
		}
	}
}

add_action( 'pre_get_posts', 'awesome_theme_pre_get_posts', 10 );

How to get categories with posts from all languages

This is much easier. Just set the lang argument to empty string ?

$categories = get_terms( [
	'taxonomy' => 'category',
	'lang'     => '',
] );

]]>
Permanentlänkar för egna kategorier i WordPress https://johanhermansson.se/2011/01/permanentlankar-for-egna-kategorier-i-wordpress https://johanhermansson.se/2011/01/permanentlankar-for-egna-kategorier-i-wordpress#comments Wed, 19 Jan 2011 21:55:16 +0000 https://johanhermansson.se/?p=167 För ett par dagar sedan skulle jag skapa en posttyp med egna kategorier och etiketter. Dock uppstod det problem när jag ville att taxonomins länkstruktur skulle vara barn till posttypen.

http://domän/posttyp/etikett/etikettnamn

Efter letande i dokumentation och googlesökande hittade jag ingen lösning. Men av en slump testade jag bara att vid registreringen av taxonomin sätta ett slash i slugparametern, vilket till min stora förvåning fungerade alldeles utmärkt.

register_taxonomy(
'posttyp_etikett',
array('posttyp'),
array(
'hierarchical' => false,
'show_ui' => true,
'query_var' => true,
'rewrite' => array(
'slug' => 'posttyp/etikett'
)
)
);

Det finns säkert någon annan vilsen själ där ute som förtvivlat letar efter samma sak.

]]>
https://johanhermansson.se/2011/01/permanentlankar-for-egna-kategorier-i-wordpress/feed 4
Omformatera egendefinerade datum i WordPress https://johanhermansson.se/2010/03/omformatera-egendefinerade-datum-i-wordpress Mon, 15 Mar 2010 15:43:46 +0000 https://johanhermansson.se/?p=73 Av olika anledningar ville jag spara datum i ett Eget fält eller Custom field, som det också heter. Men när jag skulle skriva ut datumet i mina mallar uppstod ett problem. Hur skulle jag formatera datumet enligt språket i min WordPressinstallation? Funktionerna the_time() och the_date() tillhör The Loop och visar bara inläggets eller sidans publiceringsdatum.

Efter många sökningar utan resultat hittade jag mysql2date(), en WordPressfunktion som just gör detta. Det är bara att skicka in datumet och hur man vill formatera det för att få ett vackert datum tillbaka.

Skriv ut dagens datum som ”Måndag 15 mars”:

echo mysql2date("l j F", date("Y-m-d"));

Det är bara att byta ut date(”Y-m-d”) till t ex get_meta(”qwerty”) för att omformatera ett datum från ett eget fält.

Jag skriver det här inlägget för att jag själv tyckte det var svårt att hitta informationen. Det största problemet kanske var att jag inte hittade rätt sökterm på Google. Förhoppningsvis kanske jag i alla fall hjälper en vilsen själ där ute.

Läs mer om mysql2date() på WordPress.org
http://codex.wordpress.org/Function_Reference/mysql2date

]]>
Välja vart widgets ska synas i WordPress https://johanhermansson.se/2010/01/valja-vart-widgets-ska-synas-i-wordpress https://johanhermansson.se/2010/01/valja-vart-widgets-ska-synas-i-wordpress#comments Fri, 08 Jan 2010 10:02:57 +0000 https://johanhermansson.se/?p=56 Jag fick ett uppdrag att bygga en hemsida åt ett företag med en WordPressinstallation. Det togs fram några olika mallar och några egna widgets, men ett problem uppstod. Kunden ville själva välja vilka sidor deras widgets skulle synas på. Jag började Googla och efter några fraser hittade jag pluginet Widget Logic.

Widget Logic gör så att du kan sätta upp villkor med WordPress egna Conditional Tags för dina widgets. Om du till exempel bara vill visa en widget på inläggsidor med kategorin ”Qwerty”, skriv följande villkor för den:

is_single() && in_category('Qwerty')

Möjligheterna blev i princip oändliga när jag upptäckte att man även kunde använda sig av get_meta() från pluginet More Fields.

More Fields är ett trevligt plugin som gör så att du kan skapa egna fält för dina posttyper. Standard posttyperna i WordPress är Inlägg och Sidor. Det går även att skapa egna posttyper med More Fields, men det är en annan historia.

Med More Fields skapade jag en ”box” med en checkbox för varje widget. Sedan valde jag att ”boxen” skulle finnas under posttypen Sidor. Detta innebär att om jag skapar eller redigerar en vanlig sida kommer det att finnas checkboxar för mina olika widgets. Därefter behövde jag även ställa in varje widget med villkoret get_meta(), innehållande tillhörande checkboxens slug:

get_meta('widget1_checkbox')

Ladda ner Widget Logic och More Fields enkelt från WordPress.org
http://wordpress.org/extend/plugins/widget-logic/
http://wordpress.org/extend/plugins/more-fields/

Läs mer om Widget Logic och More Fields
http://freakytrigger.co.uk/wordpress-setup/
http://labs.dagensskiva.com/plugins/more-fields/

]]>
https://johanhermansson.se/2010/01/valja-vart-widgets-ska-synas-i-wordpress/feed 5