• Resolved wpusr007

    (@wpusr007)


    Hello guys,

    I need to automatically update the value of a specific field on ALL posts from a certain Pod via a Bash script (more on that later).

    Example: Every Monday run (via cron) the BASH script to update the “price” field for ALL posts in the Pod “Equipment”.

    I’d like to use the content of another field as an input value for a variable in the BASH script.

    I believe “wp_update_post” is the way to go to update already populated fields on existing posts, but I have ZERO experience with php programming and I spent over 300hrs creating & populating hundreds of posts so obviously I am scared to screw up everything (I do have DB backups but….)

    How would you go about doing this?

    This is roughly how I see things:

    Pod=Equipment
    Post 1210
      field('EquipmentID')='52625B4'
      field('Price')='212.50'
    Post 9568
      field('EquipmentID')='13295C6'
      field('Price')='76.50'
    Post 9563
      field('EquipmentID')='98765H3'
      field('Price')='1236.74'
    ...

    “Pseudocode”

    for each posts in "Equipment" Pods
      1.  Retrieve string from EquipmentID field
      2.  Call & run external BASH script with the value retrieved in No. 1
      3.  Grab the value returned by the BASH script
      4.  Overwrite the value in the Price field with the value from no. 3
    end

    About the BASH script: I selected BASH because 1. I run Linux (Rocky Linux), and 2. I am using CURL to retrieve contents from the internet, and use “pup” & “jq” to parse HTML data into something usable… As I said I am absolutely useless in php but I dont see how performing the work would be possible other than using BASH.. I could be wrong…

    Moreover, I want to run and update the fields on a periodic basis (lets say once per week or month). Again, cron makes it so easy….

    Looking forward to replies and suggestions! I am curious to see what the experienced folks have to say about this!

    Thanks!

    • This topic was modified 2 years, 7 months ago by wpusr007.
    • This topic was modified 2 years, 7 months ago by wpusr007.
    • This topic was modified 2 years, 7 months ago by wpusr007.
Viewing 3 replies - 1 through 3 (of 3 total)
  • Plugin Author Jory Hogeveen

    (@keraweb)

    Hi @wpusr007

    Please look at update_post_meta():
    https://developer.www.ads-software.com/reference/functions/update_post_meta/

    However, if it are all simple (static) fields (like a price field) it’s way way way faster to format the field correctly yourself and directly update into the database.

    You do need to use the functions for relationships and attachments (files) so that the connections are made correctly though.

    Cheers, Jory

    Thread Starter wpusr007

    (@wpusr007)

    Hello Jory,

    thanks for the reply! Ehhhhmmmm let me ask you a few things if you dont mind.

    1. I agree writing directly in the MySQL/MariaDB database is much mnore efficient but will it cause issues in WP provided the field (price) I want to periodically update is indeed only a PODS number field without anything else in it (no dollar signs, etc). Just a plain old decimanl number

    2. I will research on how to do this because while I do have a minimal experience and knowledge with administration of MariaDB I have no experience with directly writing/reading to/from a SQL DB…. Is there anything to do before writing in the DB? Like putting WP in maintenance mode, etc or can I simply run the script and update the values in the DB?

    3.

    You do need to use the functions for relationships and attachments (files) so that the connections are made correctly though.

    You lost me here. I feel its related to question 2 (more or less..)

    • This reply was modified 2 years, 7 months ago by wpusr007.
    • This reply was modified 2 years, 7 months ago by wpusr007.
    Plugin Author Jory Hogeveen

    (@keraweb)

    Hello @wpusr007

    1. I agree writing directly in the MySQL/MariaDB database is much mnore efficient but will it cause issues in WP provided the field (price) I want to periodically update is indeed only a PODS number field without anything else in it (no dollar signs, etc). Just a plain old decimanl number

    Correct, Pods stores numbers as floats. However, the table structure from WP isn’t actually a float, it’s a char, but it’s formatted as float.
    You can simply look into the database and see how Pods stores it’s values.
    Non of our fields store the formatted value!

    2. I will research on how to do this because while I do have a minimal experience and knowledge with administration of MariaDB I have no experience with directly writing/reading to/from a SQL DB…. Is there anything to do before writing in the DB? Like putting WP in maintenance mode, etc or can I simply run the script and update the values in the DB?

    Not that I know of, however, the more plugins you use the more factors are related. There is not single answer to questions like this other than to try and test, test and test some more!

    3. You do need to use the functions for relationships and attachments (files) so that the connections are made correctly though.

    What I mean with this is that relationship fields and attachment fields are storing the relationship ID, not the full information.
    Other than that we also have a relationship reference table (podsrel).
    As you can understand this is more complex than simply storing a value in a table cell.
    Using our PHP API is a better option in this case.
    Alternatively you could also use the REST-API: https://docs.pods.io/advanced-topics/rest-api/

    Cheers, Jory

Viewing 3 replies - 1 through 3 (of 3 total)
  • The topic ‘Script updating post field for large number of posts’ is closed to new replies.