Gestionar contribuciones de WP

Es posible que necesite ver los temas y complementos de WordPress que expliquen que cada vez que los organiza, ellos organizan rutinariamente «información ficticia» para que usted tenga un sitio que funcione de inmediato. Le mostraré una forma de lograr esto utilizando exclusivamente publicaciones y páginas de WordPress que usan funciones de PHP.

Esto probablemente podría ser útil cuando:

  • Su tema o complemento requiere ciertas publicaciones o páginas.
  • Ahora organice un maniquí premium como se describe anteriormente.
  • Debe automatizar la creación de publicaciones.
  • Solo quieren comprobarlo.

En este tutorial, crearemos una explicación fácil de seguir para que los principiantes comprendan una respuesta de trabajo «rápido y sucio». Próximamente, en un tutorial definitivo, aprenderemos a retrasar lo que no hemos explorado adecuadamente aquí para crear un sistema de publicación potente y fácil de usar.

Para aquellos de ustedes que prefieren jugar con el código que ya tienen en lugar de aprender la guía completa, aquí está nuestra elaboración restante, junto con la oportunidad de usarlo y anotarlo.

if ( ! function_exists( 'PostCreator' ) ) {

	carry out PostCreator(
		$establish      = 'AUTO POST',
		$kind      = 'publish',
		$content material materials   = 'DUMMY CONTENT',
		$class  = array(1,2),
		$template  = NULL,
		$author_id = '1',
		$standing    = 'publish'
	) {

		define( POST_NAME, $establish );
		define( POST_TYPE, $kind );
		define( POST_CONTENT, $content material materials );
		define( POST_CATEGORY, $class );
		define( POST_TEMPLATE, '' );
		define( POST_AUTH_ID, $author_id );
		define( POST_STATUS, $standing );

		if ( $kind == 'net web page' ) {
			$publish      = get_page_by_title( POST_NAME, 'OBJECT', $kind );
			$post_id   = $publish->ID;
			$post_data = get_page( $post_id );
			define( POST_TEMPLATE, $template );
		} else {
			$publish      = get_page_by_title( POST_NAME, 'OBJECT', $kind );
			$post_id   = $publish->ID;
			$post_data = get_post( $post_id );
		}

		carry out hbt_create_post() {
			$post_data = array(
				'post_title'    => wp_strip_all_tags( POST_NAME ),
				'post_content'  => POST_CONTENT,
				'post_status'   => POST_STATUS,
				'post_type'     => POST_TYPE,
				'post_author'   => POST_AUTH_ID,
				'post_category' => POST_CATEGORY,
				'page_template' => POST_TEMPLATE
			);
			wp_insert_post( $post_data, $error_obj );
		}

		if ( ! isset( $publish ) ) {
			add_action( 'admin_init', 'hbt_create_post' );
			return $error_obj;
		}

	}
}

/* All accessible selections for PostCreator()

PostCreator( 'TITLE' , 'POST TYPE' , 'POST CONTENT' , 'POST CATEGORY' , 'TEMPLATE FILE NAME' , 'AUTHOR ID NUMBER' , 'POST STATUS');

TITLE - HTML Stripped Out. Straightforward String.
POST TYPE - Put up kind slug. Eg 'publish' or 'net web page'. Personalized Put up Varieties are supported.
POST CONTENT - Content material materials of the Put up/Net web page. HTML allowed.
POST CATEGORY - An array of the integer ID's of the category/lessons you could hyperlink to your publish
TEMPLATE FILE NAME - File establish of the template. Only for Pages. Throughout the format 'file_name.php'.
AUTHOR ID NUMBER - Integer value. Default is 1.
POST STATUS - Accessible selections; [ 'draft' | 'publish' | 'pending'| 'future' | 'private' | custom registered status ]

If worthwhile, PostCreator() returns nothing.
If there could also be an error PostCreator() returns a WP_error object.

*/

PostCreator( 'My Lorem Ipsum', 'net web page', 'With a big serving of Dolor. This was created using Harri Bell-Thomas's PostCreator carry out.' );

Cree publicaciones y páginas de WordPress con PHP

INSTRUCCIONES PASO A PASO

Vamos a crear una ejecución de Publicaciones y Páginas de WordPress usando PHP comúnmente conocida como PostCreator (), y necesitaremos que tome ciertos parámetros. Cada parámetro tiene un valor predeterminado, por lo que técnicamente no deberías incluir ninguno de ellos al llamar al take-out, pero bueno, ¿cuál es el lugar que te satisface?

carry out PostCreator(

	$establish      = 'AUTO POST',
	$kind      = 'publish',
	$content material materials   = 'DUMMY CONTENT',
	$class  = array(1,2),
	$template  = NULL,
	$author_id = '1',
	$standing    = 'publish'
) {

	// carry out output proper right here

}

Luego, definiré algunas constantes que son críticas para la ejecución incrustada que sigue. (Esto probablemente podría reescribirse para no usar constantes, de todos modos las usé ya que las encuentro útiles al extender la importante operación PostCreator (), sin embargo, esto podría ser una narrativa para un tutorial adicional.

define( POST_NAME, $establish );
define( POST_TYPE, $kind );
define( POST_CONTENT, $content material materials );
define( POST_CATEGORY, $class );
define( POST_TEMPLATE, '' );
define( POST_AUTH_ID, $author_id );
define( POST_STATUS, $standing );

De acuerdo, hasta ahora todo bien. Ahora he incluido una validación que evita que se generen publicaciones / páginas duplicadas (¡lo cual es una pesadilla, según veo!). Esta validación verifica si ya existe un sitio web Publish / Net con un establecimiento similar. Si lo hace, no se creará un nuevo modelo, pero si no lo hace, se creará para usted.

Entonces, detrás de la decisión de verificar el título de la publicación está todo lo que WordPress necesita para construir un sitio web (el resto se genera de forma rutinaria). Las estrategias completamente diferentes para realizar esta validación incluyen la verificación de ‘slugs’ o ID de publicación. Cubriremos todo esto en un tutorial posterior.

Esto es especialmente útil para su complemento o tema. Primero desarrollé esto para uno de mis complementos porque un sitio web de Internet tenía que estar disponible con una plantilla de sitio web específica. Con esta acción solo guardé PostCreator (), WordPress es » admin_init ‘, lo que significa que si una persona intenta eliminarlo (¡cómo se atreven!) Debería recrearlo inmediatamente en factores con el complemento Evitar descanso.

Recuerde, nadie quiere que su weblog sea secuestrado, así que asegúrese de hacerles saber claramente lo que está sucediendo y quizás darles la oportunidad de verlo.

Validación

Ahora una vez más sobre la validación. Aquí está el siguiente fragmento de código.

if ( $kind == 'net web page' ) {
	$publish      = get_page_by_title( POST_NAME, 'OBJECT', $kind );
	$post_id   = $publish->ID;
	$post_data = get_page( $post_id );
	define( POST_TEMPLATE, $template );
} else {
	$publish      = get_page_by_title( POST_NAME, 'OBJECT', $kind );
	$post_id   = $publish->ID;
	$post_data = get_post( $post_id );
}

Entonces, ¿qué diablos está pasando aquí?

Con éxito, este es básicamente un proceso similar que se repite dos veces. Intento atribuir esto a la forma en que las publicaciones y las páginas apenas se manejan de manera diferente. Además, el POST_TEMPLATE anclado solo se describe si está intentando crear una página web de Internet, ya que solo las páginas pueden aceptar este parámetro (es decir, se ignorará si está intentando crear una publicación predeterminada).

En la primera línea de la cláusula IF (su establecimiento técnico es la ‘apodosis’, aunque todavía no lo sabías) se emite la variable $ publish. Si hay una página web Publish / Net con un establecimiento similar al que está intentando crear, $ publish se completará con la información de la entrada predominante (como un objeto, no una matriz, pero esto se puede cambiar si es completamente necesario ). Esto comprobará si su título es único o no. Agregué las siguientes dos variedades porque son muy útiles si desea retrasar este proceso. Una razón para esto probablemente podría ser la actualización de la publicación actual, si ya existe.

Luego sigue nuestra ejecución anidada para agregar el gancho ‘admin_head’. Aquí está;

carry out hbt_create_post() {
	$post_data = array(
		'post_title'    => wp_strip_all_tags( POST_NAME ),
		'post_content'  => POST_CONTENT,
		'post_status'   => POST_STATUS,
		'post_type'     => POST_TYPE,
		'post_author'   => POST_AUTH_ID,
		'post_category' => POST_CATEGORY,
		'page_template' => POST_TEMPLATE
	);
	wp_insert_post( $post_data, $error_obj );
}

Eso es solo usar la ejecución incorporada de WordPress (wp_insert_post) para generar nuestro sitio web Publish / Net. Llenamos $ post_data con una matriz de nuestros parámetros (incluso puede ver nuestras constantes aquí mismo). Eso se crea y si también pudiera ocurrir un error genera un valor booleano $ error_obj. VERDADERO = Una dificultad. FALSO = todo constructivo. Lo último que debe hacer es ejecutar la ejecución anterior en el cabezal de administración, pero pasa la validación y devuelve el objeto de error.

if ( ! isset( $publish ) ) {
	add_action( 'admin_init', 'hbt_create_post' );
	return $error_obj;
}

¡Bien! Ahora que tenemos nuestra ejecución superior, ¡usémosla!

USAR

Simplemente incorpore y ejecute el proceso de ejecución de PostCreator ().

Esto se puede hacer cada vez más con los valores predeterminados, pero ¿y si queremos personalización? Luego usamos nuestros parámetros.

PostCreator(
	'TITLE',
	'POST TYPE',
	'POST CONTENT',
	'POST CATEGORY',
	'TEMPLATE FILE NAME',
	'AUTHOR ID NUMBER',
	'POST STATUS'
);

En todas estas opciones, asegúrese de utilizar apóstrofos. Asegúrese de anteponer una barra invertida si desea utilizar un apóstrofo (aparte de los que rodean los parámetros). P.ej;

PostCreator( 'Alex's Put up' );

El parámetro TITLE acepta un valor de cadena. Esto está exento de etiquetas HTML.

Por ejemplo, el parámetro POST TYPE acepta el tipo de publicación slug; ‘publicar’ o ‘página web de red’. Se admiten variedades de soporte personalizadas.

PostCreator( 'Alex's Put up', 'net web page' );

El POST CONTENT ‘acepta un valor de cadena. Este puede ser el contenido del sitio web Publish / Net creado. HTML se permite correctamente aquí.

PostCreator( 'Alex's Put up', 'net web page', 'The drive is highly effective with this one…' );

POST CATEGORY acepta una matriz de números enteros. Los números enteros corresponden al ID de la categoría / lecciones asignadas al sitio web de Publish / Net.

PostCreator( 'Alex's Put up', 'net web page' , 'The drive is highly effective with this one…' , array( 1, 2 ) );

El NOMBRE DE ARCHIVO DE LA PLANTILLA es un valor de cadena que define la plantilla de sitio web requerida para su nuevo sitio web. Esto solo funciona para las páginas. El formato podría ser; ‘Nombre de archivo.php’.

PostCreator(
	'Alex's Put up',
	net web page',
	'The drive is highly effective with this one…',
	array( 1, 2 ) ,
	'fullwidth_page.php'
);

El NÚMERO DE ID DEL AUTOR es un valor entero del ID del autor.

PostCreator(
	'Alex's Put up',
	'net web page',
	'The drive is highly effective with this one…',
	array( 1, 2 ) ,
	'fullwidth_page.php',
	'1'
);

El POST STATUS le ayuda a definir el estado del sitio web Publish / Net creado. Por defecto está «revelado».

Elección accesible; [ ‘draft’ | ‘publish’ | ‘pending’| ‘future’ | ‘private’ | custom registered status ]

PostCreator(
	'Alex's Put up',
	'net web page',
	'The drive is highly effective with this one…',
	array( 1, 2 ) ,
	'fullwidth_page.php',
	'1',
	'publish'
);

CONCLUSIÓN

WordPress es un programa de software excepcionalmente extremadamente eficiente que puede ser bastante terco en situaciones. Espero que encuentre útil este simple fragmento, tal vez aprenda uno o dos elementos junto con una de las mejores formas. Esperamos la siguiente posición. Revisaré lo que ya hemos logrado en este texto en una clase PHP, junto con eficiencia y estabilidad adicionales. Para obtener una vista previa rápida, consulte el código en Github: PostController