programing

숏코드 콜백 내에서 HEAD에 워드 프레스 추가

mailnote 2023. 9. 28. 08:40
반응형

숏코드 콜백 내에서 HEAD에 워드 프레스 추가

저는 짧은 코드를 등록하기 위해 플러그인을 만들고 있는데, 다음과 같이 사용될 때:[append_css mycss]라고 하는 사용자 정의 필드를 찾을 것입니다.mycss내용을 에 추가합니다.head문서의코드가 본체에 추가되고 있다는 것과 머리에 추가되는 방법을 모른다는 것을 제외하고는 모든 것이 잘 작동합니다.

작업 추가를 시도했습니다.wp_head하지만 그렇게 하는 동안 변수를 어떻게 전달해야 할지 모르겠고, 어쨌든 숏코드 콜백 내에서 발화하는 것 같지는 않습니다.

function append_css_short($params){
  global $post;
  if(sizeof($params)){
    $key = $params[0];
  } else {
    $key = 'css';
  }
  return '<style type="text/css">'.
  get_post_meta($post->ID, $key, true)
  .'</style>';
}
add_shortcode('append_css','append_css_short');

이걸 어떻게 하면 몸 대신 머리에 쓸 수 있을까요?그 문제에 대한 더 나은 접근법이 있습니까?

필요한 문서의 머리 부분에 인쇄하려면 사용해야 합니다.add_action와 함께wp_head갈고리를 매다

짧은 코드를 전혀 사용하지 않는 것이 더 나은 접근법이 될 수 있습니다.쇼트코드는 내용을 추가하거나 내용을 수정하기 위한 것입니다.대신 첨부할 수 있는 함수를 만듭니다.wp_head당신의 CSS를 인쇄할 겁니다.사용자가 사용자 정의 필드 이름을 일관되게 유지하도록 강제할 수 있습니다.또는 플러그인이 사용자 지정 CSS를 입력할 수 있는 게시물에 메타박스를 추가하는 것이 좋습니다.그러면 필드의 이름을 항상 확신할 수 있습니다.

function append_css() {

   global $post;

   if ( ! get_post_meta( $post->ID, 'mypluginname_css', true ) ) {
      return;
   }

   return '<style type="text/css">'. get_post_meta($post->ID, $key, true) .'</style>';

}

add_action( 'wp_head', 'append_css' );

내가 확신하지 못하는 유일한 것은 그 여부입니다.$post사용자 정의 필드 데이터는 루프 외부에서 사용할 수 있습니다.따라서 사용자 정의 데이터를 끌어오기 위해 추가 쿼리를 추가해야 할 수도 있습니다.wp_head해고됨.

@Jrod가 제공하는 답변에 약간의 수정을 가하면 다음과 같은 용도로 작동하는 플러그인이 완성됩니다.

  1. 호출된 사용자 지정 필드 만들기append_css(또는append_js) 필수 코드 포함
  2. ... 물론 2번은 없습니다 ;)

코드

<?php
/**
 * @package Append_CSS_JS
 * @version 0.1
 */
/*
Plugin Name: Append CSS JS
Plugin URI: http://itaccess.org/wordpress-plugins/append-css-js/
Description: Append Css or Js to any page using Custom Fields
Author: Billy Moon
Version: 0.1
Author URI: http://billy.itaccess.org/
*/

function append_css() {

  global $post;

  if ( ! get_post_meta( $post->ID, 'append_css', true ) ){
    return;
  }

  echo '<style type="text/css">'. get_post_meta($post->ID, 'append_css', true) .'</style>';

}

add_action( 'wp_head', 'append_css' );

function append_js() {

   global $post;

   if ( ! get_post_meta( $post->ID, 'append_js', true ) ) {
      return;
   }

   echo '<script type="text/javascript">'. get_post_meta($post->ID, 'append_js', true) .'</script>';

}

add_action( 'wp_head', 'append_js' );

?>

쇼트코드는 다음에 호출하기 때문에 그렇게는 불가능할 것 같습니다.wp_head(), 그래서 당신은 그것을 걸 수 없습니다.

여기 모든 워드프레스 후크(http://adambrown.info/p/wp_hooks )의 목록이 있습니다.

편집:

해결 방법은 다음과 같습니다.

템플릿에서:

<?php
//get the content of your post:
if(have_posts()) while(have_posts()) the_post();
    $pcontent = get_the_content();
endwhile;
?>
<html>
<head>
...
</head>
<body>
...
<?php echo $pcontent; ?>

</body>
</html>

언급URL : https://stackoverflow.com/questions/14649733/wordpress-append-to-head-from-within-shortcode-callback

반응형